1. 程式人生 > >C#(.NET)生成高質量(清晰)縮圖

C#(.NET)生成高質量(清晰)縮圖

建立高質量(清晰)縮圖——動態調整大小 Bitmap類的GetThumbnailImage方法可以從指定的影象檔案中生成縮圖,用法非常簡單。但是並不總是這樣,有時生成的縮圖的質量很差——模糊不清! 為什麼會這樣?為什麼生成的圖片是模糊的? 像JPEG這樣格式的影象可能把縮圖存在同一個檔案中。如果我們使用System.Drawing.BitmapGetThumbnailImage方法會檢測檔案中是否存在縮圖,如果找到該縮圖,它就會返回你所設定的寬高的縮圖版本。如果影象的縮圖的版本比你要求的大小要小,就會發生如下問題:生成的縮圖就會變得模糊,我們知道拉伸一個影象會導致影象質量的下降。 解決方案:
解決方法十分簡單!我們利用System.Drawing.Image物件來裝載源影象,把影象縮放到你需要的比例,而又能保持高質量,接著儲存就搞定了! 下面教你,一步一步來建立高質量的縮圖: 本例中假定了兩個變數:  String src="c:/myImages/a.jpg";   //源影象檔案的絕對路徑 String dest="c:/myImages/a_th.jpg";    //生成的縮圖影象檔案的絕對路徑 int thumbWidth=132;    //要生成的縮圖的寬度 下面通過ASP .NET C#來演示程式碼片段: 你應該包含這些名稱空間 using System.Drawing;  using System.Drawing.Drawing2D System.Drawing.Image image = System.Drawing.Image.FromFile(src); //利用Image物件裝載源影象 //接著建立一個System.Drawing.Bitmap物件,並設定你希望的縮圖的寬度和高度。 int srcWidth=image.Width;
int srcHeight=image.Height;
int thumbHeight=(srcHeight/srcWidth)*thumbWidth;
Bitmap bmp = new Bitmap(thumbWidth, thumbHeight); //從Bitmap建立一個System.Drawing.Graphics物件,用來繪製高質量的縮小圖。 System.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(bmp); //設定 System.Drawing.Graphics物件的SmoothingMode屬性為HighQuality gr.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; //下面這個也設成高質量 gr.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; //下面這個設成High gr.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; //把原始影象繪製成上面所設定寬高的縮小圖 System.Drawing.Rectangle rectDestination = new System.Drawing.Rectangle(0, 0, thumbWidth, thumbHeight);
gr.DrawImage(image, rectDestination, 0, 0, srcWidth, srcHeight, GraphicsUnit.Pixel); //儲存影象,大功告成! bmp.Save(dest); //最後別忘了釋放資源(譯者PS:C#可以自動回收吧) bmp.Dispose();
image.Dispose();