2010-10-19 49 views
1

我使用此代碼來創建縮略圖請幫我image.GetThumbnailImage(它產生非常低質量的圖像)

System.Drawing.Image.GetThumbnailImageAbort abort = new System.Drawing.Image.GetThumbnailImageAbort(this.ThumbnailCallback); 
System.Drawing.Image image2 = image.GetThumbnailImage((int)Math.Round((double)wid/difference), (int)Math.Round((double)hei/difference), abort, IntPtr.Zero); 
image2.Save(str2, System.Drawing.Imaging.ImageFormat.Jpeg); 
image2.Dispose(); 

,但我得到這個非常低質量的圖像

alt text

但它被認爲是這樣的一個

alt text

我在做什麼錯 或者如何實現這個

回答

2

你的問題與GetThumbnailImage()方法不是真的,而是你如何保存文件。您需要指定要保存的JPEG質量級別,或者它總是默認爲非常低的值。

考慮這段代碼作爲指導(它來自舊的.NET 2.0項目;代碼仍能正常編譯爲4.0,但在4.0中可能有更直接的方法;我從來沒有理由檢查)

ImageCodecInfo[] encoders = ImageCodecInfo.GetImageEncoders(); 
ImageCodecInfo jpegEncoder = null; 
for (int x = 0; x < encoders.Length; x++) { 
    if (string.Compare(encoders[x].MimeType, "image/jpeg", true) == 0) { 
     jpegEncoder = encoders[x]; 
     break; 
    } 
} 
if (jpegEncoder == null) throw new ApplicationException("Could not find JPEG encoder!"); 
EncoderParameters prms = new EncoderParameters(1); 
prms.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 80L); 
bitmap.Save(fileName, jpegEncoder, prms); 
+0

謝謝 - 我會嘗試當我的電腦附近即時通訊,並會發送你aagain - 謝謝 – Mariam 2010-10-20 05:09:54