C#サムネイルを生成して歪まない方法
最近のハンドヘルドプロジェクトでは、品目の画像の大きさが異なるため、ハンドヘルドに表示される画像の一部だけが大きく表示され、インタフェースが非常に乱れており、お客様の体験度に影響を与えています.サーバにアップロードされた画像を処理し、一定のサイズのフォーマットで保存する方法が必要です.
以下に、画像のサムネイルを取得する方法を2つご紹介します.
方法1:Imageオブジェクトを呼び出すセルフメソッドGetThumbnailImage()による画像変換
方法2:二重三次補間法を用いて、高品質の収縮を確保するために事前フィルタリングを実行し、このモードは品質の高い変換画像を生成することができる.
まずこの2つの方法を共有して、みんなは試してみることができます.
以下に、画像のサムネイルを取得する方法を2つご紹介します.
方法1:Imageオブジェクトを呼び出すセルフメソッドGetThumbnailImage()による画像変換
///
/// , Image
///
///
///
/// Image
/// Image
public Image GetReducedImage2(int width, int height, Image imageFrom)
{
//
int imageFromWidth = imageFrom.Width;
int imageFromHeight = imageFrom.Height;
try
{
// . , ;
if (width >= imageFromWidth && height >= imageFromHeight)
{
return imageFrom;
}
else
{
Image.GetThumbnailImageAbort callb = new Image.GetThumbnailImageAbort(() => { return false; });
// Image GetThumbnailImage()
Image reducedImage = imageFrom.GetThumbnailImage(width, height, callb, IntPtr.Zero);
//
reducedImage.Save(@"E:\640x480.png", ImageFormat.Png);
return reducedImage;
}
}
catch (Exception)
{
//
throw new Exception(" , !");
}
}
方法2:二重三次補間法を用いて、高品質の収縮を確保するために事前フィルタリングを実行し、このモードは品質の高い変換画像を生成することができる.
///
/// ,
///
///
///
///
///
public static Image GetReducedImage(int width, int height, Image imageFrom)
{
//
int imageFromWidth = imageFrom.Width;
int imageFromHeight = imageFrom.Height;
// . , ;
if (width >= imageFromWidth && height >= imageFromHeight)
{
return imageFrom;
}
else
{
// " "
int X = 0;
int Y = 0;
//
Bitmap bmp = new Bitmap(width, height, PixelFormat.Format24bppRgb);
bmp.SetResolution(imageFrom.HorizontalResolution, imageFrom.VerticalResolution);
using (Graphics g = Graphics.FromImage(bmp))
{
//
g.Clear(Color.White);
// 。 。 。
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
// 、 。
g.SmoothingMode = SmoothingMode.HighQuality;
// Image 。
g.DrawImage(imageFrom, new Rectangle(X, Y, width, height),
new Rectangle(0, 0, imageFromWidth, imageFromHeight), GraphicsUnit.Pixel);
//
bmp.Save(@"E:\640x480.png", ImageFormat.Png);
return bmp;
}
}
}
まずこの2つの方法を共有して、みんなは試してみることができます.