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;
}