c#ピクチャをスケール
public
static
Bitmap GetThumbnail(Bitmap b,
int
destHeight,
int
destWidth)
{
System.Drawing.Image imgSource = b;
System.Drawing.Imaging.ImageFormat thisFormat = imgSource.RawFormat;
int
sW = 0, sH = 0;
//
int
sWidth = imgSource.Width;
int
sHeight = imgSource.Height;
if
(sHeight > destHeight || sWidth > destWidth)
{
if
((sWidth * destHeight) > (sHeight * destWidth))
{
sW = destWidth;
sH = (destWidth * sHeight) / sWidth;
}
else
{
sH = destHeight;
sW = (sWidth * destHeight) / sHeight;
}
}
else
{
sW = sWidth;
sH = sHeight;
}
Bitmap outBmp =
new
Bitmap(destWidth, destHeight);
Graphics g = Graphics.FromImage(outBmp);
g.Clear(Color.Transparent);
//
g.CompositingQuality = CompositingQuality.HighQuality;
g.SmoothingMode = SmoothingMode.HighQuality;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.DrawImage(imgSource,
new
Rectangle((destWidth - sW) / 2, (destHeight - sH) / 2, sW, sH), 0, 0, imgSource.Width, imgSource.Height, GraphicsUnit.Pixel);
g.Dispose();
// ,
EncoderParameters encoderParams =
new
EncoderParameters();
long
[] quality =
new
long
[1];
quality[0] = 100;
EncoderParameter encoderParam =
new
EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
encoderParams.Param[0] = encoderParam;
imgSource.Dispose();
return
outBmp;
}