public static byte[] CreateThumbnail(byte[] imageBytes, int lnWidth, int lnHeight)
{
byte[] b;
System.Drawing.Bitmap bmpOut = null;
try
{
Bitmap loBMP = new Bitmap(System.Drawing.Image.FromStream(new MemoryStream(imageBytes)));
ImageFormat loFormat = loBMP.RawFormat;
decimal lnRatio;
int lnNewWidth = 0;
int lnNewHeight = 0;
if (loBMP.Width < lnWidth && loBMP.Height < lnHeight)
{
//NEW.............................................................................................************
var image = loBMP;
using (MemoryStream ms = new MemoryStream())
{
image.Save(ms, ImageFormat.Bmp);
return ms.ToArray();
}
//return loBMP;
}
if (loBMP.Width > loBMP.Height)
{
lnRatio = (decimal)lnWidth / loBMP.Width;
lnNewWidth = lnWidth;
decimal lnTemp = loBMP.Height * lnRatio;
lnNewHeight = (int)lnTemp;
}
else
{
lnRatio = (decimal)lnHeight / loBMP.Height;
lnNewHeight = lnHeight;
decimal lnTemp = loBMP.Width * lnRatio;
lnNewWidth = (int)lnTemp;
}
bmpOut = new Bitmap(lnWidth, lnHeight);
Graphics g = Graphics.FromImage(bmpOut);
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
g.FillRectangle(Brushes.White, 0, 0, lnNewWidth, lnHeight);
g.DrawImage(loBMP, 0, 0, lnNewWidth, lnHeight);
loBMP.Dispose();
}
catch { return imageBytes; }
var image2 = bmpOut;
using (MemoryStream ms = new MemoryStream())
{
image2.Save(ms, ImageFormat.Bmp);
b = ms.ToArray();
}
return b;
//return bmpOut;
}
Comments
Post a Comment