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