我正在保存图像文件,然后使用Image命名空间调整图像大小。
问题是从图像保存到系统到处理图像大小调整的程度,文件句柄似乎没有立即释放,给我错误“GDI +中发生了一般错误”
这是我的代码:
我在VS 2008中使用asyncfileupload ajax控件,C#
string filename = System.IO.Path.GetFileName(AsyncFileUpload1.FileName);
AsyncFileUpload1.SaveAs(Server.MapPath("./") + "abc.jpeg");
//File handle seems not get released right away here.
System.Drawing.Image FullsizeImage = System.Drawing.Image.FromFile(Server.MapPath("./") + "abc.jpeg");
System.Drawing.Image NewImage = FullsizeImage.GetThumbnailImage(60, 60, null, IntPtr.Zero);
NewImage.Save(Server.MapPath("./") + "abc.jpeg");
答案 0 :(得分:2)
System.Drawing.Image是Disposable,你需要一个using语句。
string filename = System.IO.Path.GetFileName(AsyncFileUpload1.FileName);
AsyncFileUpload1.SaveAs(Server.MapPath("./") + "abc.jpeg");
System.Drawing.Image NewImage = null;
//File handle seems not get released right away here.
using(System.Drawing.Image FullsizeImage = System.Drawing.Image.FromFile(Server.MapPath("./") + "abc.jpeg"))
NewImage = FullsizeImage.GetThumbnailImage(60, 60, null, IntPtr.Zero);
using(NewImage)
NewImage.Save(Server.MapPath("./") + "abc.jpeg");
答案 1 :(得分:0)
另一种解决方案是使用Dispose功能清理所有内容。例如
FullsizeImage.Dispose();