使用大位图会导致内存不足异常

时间:2011-07-11 08:56:31

标签: c# memory-management gdi+

我需要动态编辑(增加高度)图像。 该文件的尺寸大多为5000 * 4000。当我创建一个大尺寸的bmp并在bmp实例上调用Graphics.DrawImage方法时,我看到内存会达到峰值。

如何摆脱Out Of Memory异常?有没有办法在c#中使用大位图?

2 个答案:

答案 0 :(得分:4)

问题是操作所需的大量内存。你的是GigBytes,所以解决方案可能是使用Stream并以块的形式处理文件。

或者最好的选择是使用一些第三方库。以下是.Net的一些

  

AForge

     

Image Resizer

还要看看这个问题。

https://stackoverflow.com/questions/158756/what-is-the-best-image-manipulation-library

答案 1 :(得分:0)

这取决于你的应用程序特定的重新发现,从你的帖子不是很清楚,但通常,使用大媒体文件(图像,声音,视频)我认为真的很好的解决方案是

Memory Mapped Files

将yuor图像保存在内存映射文件中的磁盘上并通过磁盘调整大小,尽可能多地使用免费的内存来自您可能不需要快速访问的大量数据(在至少时刻)

希望这会有所帮助。 问候。