遇到一個問題:壓縮後的圖片的體積反而比原來的圖片的體積更大了。花費兩天時間排查。終於找到了原因。下面附上解決辦法:
壓縮圖片的代碼如下:
/// <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);