Cropping Centre of Image Stored In A MemoryStream

supramati

New Member
I have an image upload form that stores two sizes of images: Large and Thumbnail image.For the thumbnail image, I am trying to crop image from the center and re-size to: 30px x 30px.Here is my code:\[code\] private static Bitmap ResizeImage(MemoryStream uploadStream, int maxWidth, int maxHeight) { Image img = Image.FromStream(uploadStream); double ratioX = (double)maxWidth / img.Width; double ratioY = (double)maxHeight / img.Height; double ratio = Math.Max(ratioX, ratioY); int newWidth = (int)(img.Width * ratio); int newHeight = (int)(img.Height * ratio); Bitmap resizedBitmap = new Bitmap(newWidth, newHeight); Graphics.FromImage(resizedBitmap).DrawImage(img, 0, 0, newWidth, newHeight); img.Dispose(); return resizedBitmap; } private static Bitmap CropImageToCentre(MemoryStream uploadStream, int width, int height) { Image img = Image.FromStream(uploadStream); Bitmap resizedBitmap = new Bitmap(img); int StartX = 0, StartY = 0; int EndX = img.Width, EndY = img.Height; bool Crop = false; if (img.Width > width) { int MidX = img.Width / 2; StartX = MidX - (width / 2); EndX = MidX + (width / 2); Crop = true; } if (img.Width > height) { int MidY = img.Height / 2; StartY = MidY - (height / 2); EndY = MidY + (height / 2); Crop = true; } if (Crop) { Size imgSize = new Size(width, height); resizedBitmap = new Bitmap(img, imgSize); } img.Dispose(); return resizedBitmap; } public static Bitmap ResizeThumbnail(MemoryStream ms) { int thumbWidth = int.Parse(ConfigurationManager.AppSettings["thumbwidth"]); int thumbHeight = int.Parse(ConfigurationManager.AppSettings["thumbheight"]); return CropImageToCentre(BitmapToMemoryStream(ResizeImage(ms, thumbWidth, thumbHeight)), thumbWidth, thumbHeight); } public static Bitmap ResizeLargeImage(MemoryStream ms) { int width = int.Parse(ConfigurationManager.AppSettings["largewidth"]); int height = int.Parse(ConfigurationManager.AppSettings["largeheight"]); return ResizeImage(ms, width, height); } private static MemoryStream BitmapToMemoryStream(Bitmap bm) { MemoryStream memoryStream = new MemoryStream(); bm.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Jpeg); return memoryStream; }\[/code\]The issue I'm having is when calling the \[code\]ResizeThumbnail()\[/code\] method, the image does not get cropped or resized to 30px height and width.
 
Back
Top