【问题标题】:releasing file handle on image释放图像上的文件句柄
【发布时间】:2011-01-18 08:01:04
【问题描述】:

我正在保存一个图像文件,然后使用 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"); 

【问题讨论】:

    标签: c# asp.net ajax


    【解决方案1】:

    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");
    

    【讨论】:

      【解决方案2】:

      另一个解决方案是使用 Dispose 函数来清理所有内容。例如

      FullsizeImage.Dispose();

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-21
        • 1970-01-01
        • 1970-01-01
        • 2011-02-10
        • 1970-01-01
        • 2010-12-11
        • 1970-01-01
        相关资源
        最近更新 更多