.NET 解決壓縮圖片後壓縮圖片體積比原圖片大的問題

遇到一個問題:壓縮後的圖片的體積反而比原來的圖片的體積更大了。花費兩天時間排查。終於找到了原因。下面附上解決辦法:

壓縮圖片的代碼如下:
/// <summary> 
/// 爲圖片生成縮略圖   
/// </summary> 
/// <param name="phyPath">原圖片的路徑</param> 
/// <param name="width">縮略圖寬</param> 
/// <param name="height">縮略圖高</param> 
/// <returns></returns> 
public static System.Drawing.Image GetThumbnail(System.Drawing.Image image, int width, int height)
{
        Bitmap bmp = new Bitmap(width, height);
        //從Bitmap創建一個System.Drawing.Graphics 
        System.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(bmp);
        //設置  
        gr.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
        //下面這個也設成高質量 
        gr.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
        //下面這個設成High 
        gr.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
        //把原始圖像繪製成上面所設置寬高的縮小圖 
        System.Drawing.Rectangle rectDestination = new System.Drawing.Rectangle(0, 0, width, height);
        gr.DrawImage(image, rectDestination, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel);
        return bmp;
}

主要是壓縮後的圖片要指定格式。因爲格式問題可能會導致上述問題。壓縮圖片前20KB,壓縮後55KB。
解決其實就一行代碼,保存圖片後指定格式。

System.Drawing.Image newimg = Thumbnail.GetThumbnail(image, width, height);
newimg.Save(thumSaveDir + thumFileName, System.Drawing.Imaging.ImageFormat.Jpeg);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章