c# - 处理大图像时出现内存不足异常

标签 c# image out-of-memory

<分区>

以下行在加载大图像时抛出 OutOfMemoryException

System.Drawing.Image img = System.Drawing.Image.FromFile(filepath);

我尝试使用 8280x6208 的 8.76 MB 图像文件和许多其他较小的图像,效果很好。

但是当我尝试使用 10328x7760 的 6.44 MB 图像文件时,它会抛出 OutOfMemoryException。

我还尝试在 photoshop 中打开文件并以较差的质量 (1,32 MB) 保存它,但尺寸相同时,它会抛出 OutOfMemoryException。

我尝试将另一个较小的图像放大到 10328x7760,这也引发了 OutOfMemoryException。

所以我很确定这是一个实际的内存不足问题,我的问题是:

我能以某种方式增加内存吗?

我正在使用带有 8GB RAM 的 Windows 8.1 64 位,带有 IIS Express 的 Visual Studio 2013。这是一个 Web 应用程序项目。

编辑:我不认为这是建议的格式问题,我尝试使用 10000x10000 黑色图像和 5000x5000 黑色图像。 10000 次抛出 OOM,5000 次不抛出。

最佳答案

将其编译为“任何 CPU”并取消选中 Visual Studio 解决方案构建配置中的“首选 32 位”。

不是你没有内存,而是.NET应用程序默认以32位进程运行,它没有足够的内存。

关于c# - 处理大图像时出现内存不足异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29417166/

相关文章:

c# - Tesseract ocr PDF 作为输入

c# - 确保线程恰好在一秒钟内滴答作响的最佳方法是什么?

javascript - 使用css设置背景的宽度和高度

c# - 如何在表格单元格中创建斜线

javascript - 如何在悬停时隐藏图像的标题

image - Delphi 中伪造的类似 Web 2.0 的动画工具提示

python - 读取大文件时跳过一长行以避免 MemoryError?

python - 使用 Openpyxl 进行迭代时出现 MemoryLoadError

java - 如果出现 OutOfMemoryError,Finally block 将被执行?

c# - 这是访问枚举的安全方法吗?