gpt4 book ai didi

.net - 如何从文件加载图像而不保持文件锁定?

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

我希望在 PictureBox 中显示图像,从文件加载图像。不过,该文件会定期被覆盖,因此我无法保持文件锁定。我首先这样做:

pictureBox.Image = Image.FromFile( 文件名 );

但是,这会使文件保持锁定状态。然后我尝试读取流:

using (System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Open, System.IO.FileAccess.Read))
{
pictureBox.Image = Image.FromStream(fs);
}

这不会锁定文件,但确实会导致稍后抛出异常; MSDN 指出流必须在图像的生命周期内保持打开状态。 (异常(exception)情况包括“无法读取已关闭的文件”或类似消息。)

如何从文件加载图像,然后不再引用该文件?

最佳答案

很抱歉回答我自己的问题,但我认为这太有用了,不适合我自己保留。

诀窍是在将数据加载到图像中之前将数据从文件流复制到内存流中。然后文件流就可以安全关闭了。

using (System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Open, System.IO.FileAccess.Read))
{
System.IO.MemoryStream ms = new System.IO.MemoryStream();
fs.CopyTo(ms);
ms.Seek(0, System.IO.SeekOrigin.Begin);
pictureBox.Image = Image.FromStream(ms);
}

关于.net - 如何从文件加载图像而不保持文件锁定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5961652/

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