我需要即时编辑(增加高度)图像。文件的尺寸通常为5000 * 4000。当我创建一个具有大尺寸的bmp并在bmp实例上调用Graphics.DrawImage方法时,我看到内存飙升到峰值。
如何摆脱内存不足异常?有没有一种方法可以在C#中处理大型位图?
我需要即时编辑(增加高度)图像。文件的尺寸通常为5000 * 4000。当我创建一个具有大尺寸的bmp并在bmp实例上调用Graphics.DrawImage方法时,我看到内存飙升到峰值。
如何摆脱内存不足异常?有没有一种方法可以在C#中处理大型位图?
或者最好的选择是使用一些第三方库。以下是一些用于 .Net 的库
还可以查看这个 SO 问题。
https://stackoverflow.com/questions/158756/what-is-the-best-image-manipulation-library
这取决于您的应用程序特定要求,从您的帖子中并不是很清楚,但通常来说,处理大型媒体文件(图像、声音、视频),我认为真正好的解决方案是
将您的图像保存在磁盘上的内存映射文件中,并通过在磁盘上进行调整大小来释放尽可能多的RAM,以便从您可能不需要快速访问的大量数据中获得更快的访问速度(至少在那个时刻)
希望这可以帮助到您。 敬礼。
System.Drawing.Bitmap(string)
,但是没有看到任何MMF代码...以下的GDI方法是否可以实现呢?int num = SafeNativeMethods.Gdip.GdipCreateBitmapFromFile(filename, out zero);
- Davi Fiamenghi