Web サイトを開発する場合、サムネイルの生成は非常に一般的で実用的な機能です。これまでは、ASP の COM コンポーネントを使用する必要がありましたが、現在では、.NET の強力なクラス ライブラリを使用して簡単に実装できます。完全なコードは以下に掲載されています (詳細なメモ付き)。QQROOM ネットワーク ホームに画像をアップロードするには、インターネット上のいくつかの記事と .net SDK 関連のコンテンツを参照してください。
/// <概要>
/// サムネイルを生成する
/// 概要>
/// ソース画像のパス(物理パス)
/// サムネイルのパス(物理パス)
/// サムネイルの幅
/// サムネイルの高さ
/// サムネイルの生成方法
public static void MakeThumbnail(stringoriginalImagePath,stringthumbnailPath,int width,int height,stringmode)
{
画像originalImage = Image.FromFile(originalImagePath);
int 幅 = 幅;
int 高さ = 高さ;
int x = 0;
int y = 0;
int ow =originalImage.Width;
int oh = originalImage.Height
スイッチ (モード);
{
case "HW"://高さと幅のスケーリングを指定します (変形される可能性があります)
壊す;
case "W"://幅と高さを比例して指定
toheight =originalImage.Height *幅/originalImage.Width;
壊す;
case "H"://高さと幅の比率を指定します
towidth = オリジナルイメージ.幅 * 高さ/オリジナルイメージ.高さ;
壊す;
「カット」の場合:高さと幅を指定してカット(変形なし)
if((double)originalImage.Width/(double)originalImage.Height > (double)towidth/(double)toheight)
{
ああ = オリジナル画像.高さ;
ow = オリジナルイメージ.高さ*幅/高さまで;
y = 0;
x = (originalImage.Width - ow)/2;
}
それ以外
{
ow = オリジナル画像.幅;
ああ = オリジナル画像.幅*高さ/幅まで;
x = 0;
y = (originalImage.Height - ああ)/2;
}
壊す;
デフォルト :
壊す;
}
// 新しい bmp 画像を作成します
画像ビットマップ = new System.Drawing.Bitmap(towidth,toheight)
//新しい描画ボードを作成します。
Graphics g = System.Drawing.Graphics.FromImage(bitmap);
//高品質な補間方法を設定します。
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High
//滑らかさを示すために高品質、低速度を設定します。
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality
// キャンバスをクリアし、透明な背景色で塗りつぶします。
g.Clear(Color.Transparent);
//元の画像の指定された部分を指定された位置とサイズで描画します
g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight),
新しい Rectangle(x, y, ow,oh),
GraphicsUnit.Pixel
);
{
//サムネイルをjpg形式で保存
bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch(System.Exception e)
{
eを投げます。
}
ついに
{
オリジナルイメージ.Dispose();
bitmap.Dispose();
g.Dispose();
}
キー メソッド Graphics.DrawImage については、ms-help://MS.NETFrameworkSDKv1.1.CHS/cpref/html/frlrfsystemdrawinggraphicsclassdrawimagetopic11.htm
http://www.cnblogs.com/jialine/archive/2006/09/15 を
参照してください。