とある画像(エチでないやつ)を扱うシステムをASP運用してるのですが、この画像がなかなかでっかくて、WAN経由で一覧表示するとパフォマンス悪いってのがありました。
まあいいかなと思い、そのまんまにしてたのですが、このシステムの一部機能を使ったwebサイトを作る仕事をやらせて頂ける事になったので(感謝感激)、サムネル作ってパフォマンス上げないとなー、とゆうことで作ろうと思ったら、サムネルを作るメソッドが標準であるじゃないですか。
なので使い方載せてみました。
private void Page_Load(object sender, System.EventArgs e)
{
Graphics _graph = Graphics.FromImage(new Bitmap(120,90));
System.Drawing.Image.GetThumbnailImageAbort _callback
= new System.Drawing.Image.GetThumbnailImageAbort(thumbnailCallback);
Bitmap _bmp = new Bitmap(
new Bitmap(Server.MapPath(imageUrl)).GetThumbnailImage(120,90,_callback,IntPtr.Zero));
_graph.DrawImage(_bmp,0,0);
// イメージ画質の調整
ImageCodecInfo _info = getEncoderInfo("image/jpeg");
// イメージをストリーム保存
if (_info == null)
{
_bmp.Save(Response.OutputStream,ImageFormat.Jpeg);
}
else
{
EncoderParameters wParams = new EncoderParameters();
EncoderParameter wParam = new EncoderParameter(Encoder.Quality,125L);
wParams.Param[0] = wParam;
_bmp.Save(Response.OutputStream,_info,wParams);
}
_bmp.Dispose();
}
public bool thumbnailCallback()
{
return false;
}
private ImageCodecInfo getEncoderInfo(string mimeType)
{
ImageCodecInfo[] _infos = ImageCodecInfo.GetImageEncoders();
foreach (ImageCodecInfo _info in _infos)
{
if (_info.MimeType == mimeType)
{
return _info;
}
}
return null;
}
赤字で書いた GetThumbnailImageメソッドがそれです。
callback用デリゲートを書くのはお約束みたいです。(GDI+ バージョン1では利用できないらしいです)
120×120ピクセル程度のサムネイルであればちょうど良いみたいですが、
それ以上大きい場合は自分でコード書け、みたいな事書いてました。
posted @ 18:05 feedback (1)
私は自由のためXRumerを探して !!!
あなたが私にアドバイスになるだろう、私はそれをどこでダウンロードできますか?
それは実際にSEOのための最適なプログラムです。 !
P.S. 他のすべてのバージョンが古すぎると効果的ではない、 12.0.6 - 私は最新バージョンのみのXRumerが必要です!