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

Ula*_*lab 8 c# gdi+ memory-management

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

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

She*_*Pro 5

问题是操作所需的大量内存。你的需要一些 GigaBytes,所以解决方案可能是使用 Stream 并分块处理文件。

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

锻造厂

图像调整器

也看看这个SO问题。

/sf/ask/11112951/


Tig*_*ran 0

这取决于您应用程序的特定要求,您的帖子中不太清楚,但一般来说,处理大媒体文件(图像、声音、视频)我认为真正好的解决方案是

内存映射文件

将您的图像保存在磁盘上的内存映射文件中,并调整其在磁盘上的大小,通过尽可能多地释放您的 RAM,您可能不需要快速访问这些数据(至少在那一刻) )

希望这可以帮助。问候。