一般來說,使用GetThumbnailImage生成圖片縮略圖其實效果還是可以的,一般上傳jpg格式效果也不錯,但是有時候就會出現問題。比如“如當源圖尺寸過大時,生成的縮略圖質量會很低”,還有“當源圖是一個Gif圖片且含有透明色時,生成的縮略圖會將透明色填充成黑色”,如果“在縮略圖較大時效果也不好,尤其是超過120”通過MSDN來看:
Image.GetThumbnailImage 方法
返回此 Image 對象的縮略圖。
[Visual Basic]Public Function GetThumbnailImage( _ ByVal thumbWidth As Integer, _ ByVal thumbHeight As Integer, _ ByVal callback As Image.GetThumbnailImageAbort, _ ByVal callbackData As IntPtr _) As Image[C#]public Image GetThumbnailImage( int thumbWidth, int thumbHeight, Image.GetThumbnailImageAbort callback, IntPtr callbackData);[C++]public: Image* GetThumbnailImage( int thumbWidth, int thumbHeight, Image.GetThumbnailImageAbort* callback, IntPtr callbackData);[JScript]public function GetThumbnailImage( thumbWidth : int, thumbHeight : int, callback : Image.GetThumbnailImageAbort, callbackData : IntPtr) : Image;
參數
thumbWidth
請求的縮略圖的寬度(以像素為單位)。
thumbHeight
請求的縮略圖的高度(以像素為單位)。
callback
一個 Image.GetThumbnailImageAbort 委托。在 GDI+ 1.0 版中不使用此委托。即便如此,也必須創建一個委托并在該參數中傳遞對此委托的引用。
callbackData
必須是 IntPtr.Zero。
返回值
用于表示該縮略圖的 Image 對象。
備注
如果 Image 對象包含一個嵌入式縮略圖像,則此方法會檢索嵌入式縮略圖,并將其縮放為所需大小。如果 Image 對象不包含嵌入式縮略圖像,此方法會通過縮放主圖像創建一個縮略圖像。
當所請求的縮略圖大小約為 120×120 時,GetThumbnailImage 工作正常。如果從一個有嵌入式縮略圖的 Image 對象中請求一個較大的縮略圖像(比如 300×300),則在縮略圖像的質量會有顯著的降低。通過調用 DrawImage 縮放主圖像(而非嵌入式縮略圖),則效果可能較好。
示例
[C#] 下面的示例創建并顯示一個縮略圖圖像。從不調用此委托。
[C#] public bool ThumbnailCallback(){return false;}public void Example_GetThumb(PaintEventArgs e){Image.GetThumbnailImageAbort myCallback =new Image.GetThumbnailImageAbort(ThumbnailCallback);Bitmap myBitmap = new Bitmap("Climber.jpg");Image myThumbnail = myBitmap.GetThumbnailImage(40, 40, myCallback, IntPtr.Zero);e.Graphics.DrawImage(myThumbnail, 150, 75);}