使用System.Drawing.Image加载图像时内存不足

时间:2013-05-30 17:44:42

标签: c# image memory image-size

System.Drawing.Image original = System.Drawing.Image.FromFile(photo);

这就是我遇到问题的代码“Out of memory。”

photo”是图片的路径,其大小为6400x6400

有人有这个想法吗?

2 个答案:

答案 0 :(得分:3)

这是C#吗?我想答案可能就在这里。

out of memory Image.FromFile

用户的最佳答案:https://stackoverflow.com/users/31158/jordao

  

Image.FromFile文档中,如果出现OutOfMemoryException,则可以抛出:

     
    

该文件没有有效的图片格式。

         

-OR -

         

GDI +不支持文件的像素格式。

  
     

检查图像格式。

     

此外,如果要在加载图像后立即关闭流,则必须复制图像。看看这里。 GDI +必须在图像的生命周期内保持流打开。

另一个需要考虑的最佳答案和主题:

Out Of Memory exception on System.Drawing.Image.FromFile()

来自用户:https://stackoverflow.com/users/22656/jon-skeet

  

值得知道的是,OutOfMemoryException并不总是意味着内存不足 - 尤其是在处理文件时。我相信如果你出于某种原因用完手柄也会发生这种情况。

     

你完成它们之后是否处理了所有的位图?对于单个图像,这是否会重复发生?

另外,我想补充一下 - 你是否使用你的代码保存了这个文件并尝试在另一个图像查看器中查看它?如果创建不正确,可能会损坏。

答案 1 :(得分:0)

由于我认为这是在C#中,您的代码是在循环中还是在Paint事件中?这可以解释为什么它不起作用。如果多次加载多个图像或单个图像,您当然会遇到“内存不足”异常。