I have some code which crops an image on a button click. The code works fine but if i try and crop another image before a page refresh I get the "generic error occurred in GDI+." message. I'm 99% certain this is because the image/bitmap has
not been cleared from the memory so cant be overwritten. I just can't see where or what to Dispose in the code below to get it to work.
Can anyone see what I'm doing wrong?
protected void _cropCommand_Click(object sender, EventArgs e)
{
string FullBasePath = "~/images/" + GetFolderBase + "/" + GetImageCode + "_" + GetImageNumber + ".jpg";
string FullSavePath = "~/images/" + GetFolderSave + "/" + GetImageCode + "_" + GetImageNumber + ".jpg";
using (var photo = System.Drawing.Image.FromFile(Server.MapPath(FullBasePath)))
using (var result = new Bitmap(GetImageWidth, GetImageHeight, photo.PixelFormat))
{
result.SetResolution(photo.HorizontalResolution, photo.VerticalResolution);
using (var g = Graphics.FromImage(result))
{
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.DrawImage(photo, new Rectangle(0, 0, 300, 200), new Rectangle(0, 0, 120, 80), GraphicsUnit.Pixel);
g.Dispose();
photo.Dispose();
ImageCodecInfo[] iciInfo = ImageCodecInfo.GetImageEncoders();
EncoderParameters encoderParameters;
encoderParameters = new EncoderParameters(1);
encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, 83L);
result.Save(Server.MapPath(FullSavePath), iciInfo[1], encoderParameters);
result.Dispose();
}
}
pinchy72
Member
21 Points
17 Posts
Clear Uploaded Image From Memory
Sep 09, 2011 03:10 PM|LINK
I have some code which crops an image on a button click. The code works fine but if i try and crop another image before a page refresh I get the "generic error occurred in GDI+." message. I'm 99% certain this is because the image/bitmap has not been cleared from the memory so cant be overwritten. I just can't see where or what to Dispose in the code below to get it to work.
Can anyone see what I'm doing wrong?
protected void _cropCommand_Click(object sender, EventArgs e) { string FullBasePath = "~/images/" + GetFolderBase + "/" + GetImageCode + "_" + GetImageNumber + ".jpg"; string FullSavePath = "~/images/" + GetFolderSave + "/" + GetImageCode + "_" + GetImageNumber + ".jpg"; using (var photo = System.Drawing.Image.FromFile(Server.MapPath(FullBasePath))) using (var result = new Bitmap(GetImageWidth, GetImageHeight, photo.PixelFormat)) { result.SetResolution(photo.HorizontalResolution, photo.VerticalResolution); using (var g = Graphics.FromImage(result)) { g.InterpolationMode = InterpolationMode.HighQualityBicubic; g.DrawImage(photo, new Rectangle(0, 0, 300, 200), new Rectangle(0, 0, 120, 80), GraphicsUnit.Pixel); g.Dispose(); photo.Dispose(); ImageCodecInfo[] iciInfo = ImageCodecInfo.GetImageEncoders(); EncoderParameters encoderParameters; encoderParameters = new EncoderParameters(1); encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, 83L); result.Save(Server.MapPath(FullSavePath), iciInfo[1], encoderParameters); result.Dispose(); } }