2010年11月16日

C# 製作縮圖


縮圖縮圖縮圖

C#做縮圖好像蠻簡單的
筆記一下!!!


Image.GetThumbnailImage 方法



傳回這個 Image 的縮圖。
命名空間: System.Drawing
組件: System.Drawing (在 system.drawing.dll 中)



參數

thumbWidth
要求的縮圖影像的寬度 (單位為像素)。
thumbHeight
要求的縮圖影像的高度 (單位為像素)。
callback
Image.GetThumbnailImageAbort 委派。在 GDI+ 1.0 版中,不使用委派。即使如此,您必須建立委派,並在這個參數中傳遞參考給該委派。
callbackData
必須是 Zero

傳回值

Image,表示縮圖。

Image img = Image.FromFile("PATH");
img.GetThumbnailImage(Width, Height, null, IntPtr.Zero).Save("thumb_" + filename + ext);

還有另一種方法是用Graphic的DrawImage()
威力比較強大~


Graphics.DrawImage 方法



(Image, Rectangle, Rectangle, GraphicsUnit)


以指定的大小,在指定的位置繪製所指定 Image 之指定部分。


參數

image
要繪製的 Image
destRect
Rectangle 結構,指定繪製影像的位置和大小。縮放影像來符合矩形。
srcRect
Rectangle 結構,指定 image 物件要繪製的部分。
srcUnit
GraphicsUnit 列舉型別的成員,指定 srcRect 參數所使用的測量單位。


//設定畫布大小
Image tmp = new Bitmap(Width, Height);
Graphics g = Graphics.FromImage(tmp);

//這邊不是重點
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;

//設定畫布的底色~透明或白色之類
g.Clear(Color.Transparent);

//把來源圖片轉換成指定的大小畫到畫布上面
g.DrawImage(sourceImg, new Rectangle(0, 0, Width, Height), new Rectangle(0, 0, sourceImg.Width, sourceImg.Height), GraphicsUnit.Pixel);

g.Dispose();

tmp.Save("thumb_" + filename + ext);


收工~吃飯!

沒有留言:

張貼留言

您可以使用一些 HTML 標記,例如 <b>, <i>, <a>