gpt4 book ai didi

gdi+ - 为什么Image.FromFile有时会使文件句柄保持打开状态?

转载 作者:行者123 更新时间:2023-12-03 12:02:27 27 4
gpt4 key购买 nike

我正在ASP.NET应用程序中的.NET中的GDI +中进行大量图像处理。

我经常发现Image.FromFile()使文件句柄保持打开状态。

为什么是这样?在不保留文件句柄的情况下打开图像的最佳方法是什么。

  • 注意:我没有做任何愚蠢的事情,例如将Image对象摆在身边-即使我当时我也希望文件句柄保持 Activity 状态
  • 最佳答案

    我和其他几位发帖人经历了同样的旅程。我注意到的事情:

  • 在释放文件句柄时,使用Image.FromFile似乎确实不可预测。 在所有情况下,调用Image.Dispose()不会释放文件句柄。
  • 如果您在FileStream上调用Dispose()或按照Kris的建议将整个内容包装在Using {}语句中,则使用FileStream和Image.FromStream方法可以起作用,并释放文件上的句柄。但是,如果您随后尝试将Image对象保存到流中,则Image.Save方法将引发异常“GDI +中发生一般错误” 。大概Save方法中的某些内容想了解原始文件。
  • 史蒂文的方法对我有用。我能够删除内存中包含Image对象的原始文件。我还能够将Image保存到流和文件中(我需要完成这两项操作)。我还能够将文件保存为与原始文件同名的文件,如果使用Image.FromFile方法,则无法记录该文件(我发现这很奇怪,因为这肯定是最有可能的用例,但是嘿。)

  • 总结一下,像这样打开您的图片:
    Image img = Image.FromStream(new MemoryStream(File.ReadAllBytes(path)));

    然后,您可以自由地随意调整它(和原始文件)。

    关于gdi+ - 为什么Image.FromFile有时会使文件句柄保持打开状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/788335/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com