我正在从文件加载位图图像。当我尝试将图像保存到另一个文件时,出现以下错误“GDI+ 中发生一般错误”。我相信这是因为文件被图像对象锁定。
好的,所以尝试调用 Image.Clone 函数。这仍然会锁定文件。
唔。接下来我尝试从 FileStream 加载位图图像并将图像加载到内存中,这样 GDI+ 就不会锁定文件。这很好用,除非我需要使用 Image.GetThumbnailImage 方法生成缩略图,它会引发内存不足异常。显然我需要保持流打开以停止此异常,但如果我保持流打开,则文件保持锁定状态。
所以这种方法不好。最后,我创建了该文件的副本。所以现在我有两个版本的文件。1 我可以在我的 c# 程序中锁定和操作。这个其他原始文件保持解锁状态,我可以将修改保存到其中。这样做的好处是即使在保存更改后也可以恢复更改,因为我正在操作无法更改的文件副本。
当然有更好的方法来实现这一点,而不必拥有 2 个版本的图像文件。有任何想法吗?