Mega Code Archive

 
Categories / C# / 2D Graphics
 

Make Thumb

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data.SqlClient; using System.Configuration; using System.Data; using System.Drawing; using System.IO; namespace Hdnug {     /// <summary>     /// Summary description for ImageUtils     /// </summary>     public class ImageUtils     {         const int sizeThumb = 69;         public static byte[] MakeThumb(byte[] fullsize)         {             Image iOriginal, iThumb;             int targetH, targetW;             iOriginal = Image.FromStream(new MemoryStream(fullsize));             if (iOriginal.Height > iOriginal.Width)             {                 targetH = sizeThumb;                 targetW = Convert.ToInt32(iOriginal.Width * (sizeThumb / iOriginal.Height));             }             else             {                 targetW = sizeThumb;                 targetH = Convert.ToInt32(iOriginal.Height * (sizeThumb / iOriginal.Width));             }             iThumb = iOriginal.GetThumbnailImage(targetW, targetH, null, System.IntPtr.Zero);             MemoryStream m = new MemoryStream();             iThumb.Save(m, System.Drawing.Imaging.ImageFormat.Jpeg);             return m.GetBuffer();         }         public static byte[] MakeThumb(byte[] fullsize, int newwidth, int newheight)         {             Image iOriginal, iThumb;             double scaleH, scaleW;             Rectangle srcRect = new Rectangle();             iOriginal = Image.FromStream(new MemoryStream(fullsize));             scaleH = iOriginal.Height / newheight;             scaleW = iOriginal.Width / newwidth;             if (scaleH == scaleW)             {                 srcRect.Width = iOriginal.Width;                 srcRect.Height = iOriginal.Height;                 srcRect.X = 0;                 srcRect.Y = 0;             }             else if ((scaleH) > (scaleW))             {                 srcRect.Width = iOriginal.Width;                 srcRect.Height = Convert.ToInt32(newheight * scaleW);                 srcRect.X = 0;                 srcRect.Y = Convert.ToInt32((iOriginal.Height - srcRect.Height) / 2);             }             else             {                 srcRect.Width = Convert.ToInt32(newwidth * scaleH);                 srcRect.Height = iOriginal.Height;                 srcRect.X = Convert.ToInt32((iOriginal.Width - srcRect.Width) / 2);                 srcRect.Y = 0;             }             iThumb = new Bitmap(newwidth, newheight);             Graphics g = Graphics.FromImage(iThumb);             g.DrawImage(iOriginal, new Rectangle(0, 0, newwidth, newheight), srcRect, GraphicsUnit.Pixel);             MemoryStream m = new MemoryStream();             iThumb.Save(m, System.Drawing.Imaging.ImageFormat.Jpeg);             return m.GetBuffer();         }         public static byte[] MakeThumb(byte[] fullsize, int maxwidth)         {             Image iOriginal, iThumb;             double scale;             iOriginal = Image.FromStream(new MemoryStream(fullsize));             if (iOriginal.Width > maxwidth)             {                 scale = iOriginal.Width / maxwidth;                 int newheight = Convert.ToInt32(iOriginal.Height / scale);                 iThumb = new Bitmap(iOriginal, maxwidth, newheight);                 MemoryStream m = new MemoryStream();                 iThumb.Save(m, System.Drawing.Imaging.ImageFormat.Jpeg);                 return m.GetBuffer();             }             else             {                 return fullsize;             }         }     } }