ウェブサーバーにアップロードされた画像のサムネイル作成。
Bitmap bmp = new Bitmap("sample.jpg");
System.Drawing.Image thumb = bmp.GetThumbnailImage(90, 90, null, IntPtr.Zero);
thumb.Save("sample_thumbnail.jpg", ImageFormat.Jpeg);
120×120くらいまでは、このコードでいいけど、これよりサイズの大きなサムネイルになると、途端に画質が悪くなる。これ以上のサイズはDrawImageでやれということらしい。
最初はBitBltを使ってGraphicsオブジェクトからBitmapを取り出そうとしていたんだけど、もっと簡単にできる方法があった。
Bitmap bmp = new Bitmap("sample.jpg");
Bitmap destBmp = new Bitmap(200, 200);
Graphics grp = Graphics.FromImage(destBmp);
grp.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
grp.DrawImage(bmp, 0, 0, 200, 200);
despBmp.Save("sample200x200.jpg", ImageFormat.Jpeg);
バイキュービック法(3次補間法)を使うリサイズのサンプル。かなり画質もいい。


コメント