生成高品质的缩略图

转自:http://hi.baidu.com/zhaoyf/blog/item/06d6b812175371cec2fd7812.html

高品质,就是指定Graphic的
InterpolationMode属性为 HighQualityBicubic

public static void myGetThumbnailImage(string SourceFile, string strSavePathFile, int ThumbWidth, int ThumbHeight, string BgColor) 
    { 
        System.Drawing.Image oImg 
= System.Drawing.Image.FromFile(SourceFile); 
        
//小图 
        int intwidth, intheight; 
        
if (oImg.Width > oImg.Height) 
        { 
            
if (oImg.Width > ThumbWidth) 
            { 
                intwidth 
= ThumbWidth; 
                intheight 
= (oImg.Height * ThumbWidth) / oImg.Width; 
            } 
            
else 
            { 
                intwidth 
= oImg.Width; 
                intheight 
= oImg.Height; 
            } 
        } 
        
else 
        { 
            
if (oImg.Height > ThumbHeight) 
            { 
                intwidth 
= (oImg.Width * ThumbHeight) / oImg.Height; 
                intheight 
= ThumbHeight; 
            } 
            
else 
            { 
                intwidth 
= oImg.Width; 
                intheight 
= oImg.Height; 
            } 
        } 
        
//构造一个指定宽高的Bitmap 
        Bitmap bitmay = new Bitmap(intwidth, intheight); 
        Graphics g 
= Graphics.FromImage(bitmay); 
        Color myColor; 
        
if (BgColor == null
            myColor 
= Color.FromName("white"); 
        
else 
            myColor 
= Color.FromName(BgColor); 
        
//用指定的颜色填充Bitmap 
        g.Clear(myColor); 
        g.InterpolationMode 
= InterpolationMode.HighQualityBicubic;  
        
//开始画图 
        g.DrawImage(oImg, new Rectangle(00, intwidth, intheight), new Rectangle(00, oImg.Width, oImg.Height), GraphicsUnit.Pixel); 
        bitmay.Save(strSavePathFile, System.Drawing.Imaging.ImageFormat.Jpeg); 
        g.Dispose(); 
        bitmay.Dispose(); 
        oImg.Dispose(); 
        
//删除源图 
        try 
        { 
            File.Delete(SourceFile); 
        } 
        
catch 
        { 
        } 
    } 

你可能感兴趣的:(缩略图)