C# 赢。表单 - 检索图像时内存不足

C# Win. Form - Out of memory when retrieving an Image

简介

我想在 PictureBox 中显示 PNG 图像。在 运行 时,软件向用户询问图像的路径。

我正在使用的解决方案

这是我到目前为止的代码

picturebox1.Image = null;
OpenFileDialog ofDlg = new OpenFileDialog();
ofDlg.Filter = "Image files|*.png";
if (DialogResult.OK == ofDlg.ShowDialog())
{
     picturebox1.Image = Image.FromFile(ofDlg.FileName); //Out of memory.
}

问题

直到我得到一张 25.7 MB(8827 x 11350 像素) 的图像之前,一切都很好。

我知道你们可能都建议我应该得到这个图像的较浅版本,但问题是这个软件用于缩放图像以查看图像的细节。所以我不能不惜一切代价调整它的大小。

现在,每当我 运行 上面的代码时,它都会给我异常

Out of memory.

我不明白这是什么问题,因为我的 PC 上安装了 8GB RAM 那么内存不足是怎么回事?以下是出现此错误消息时我的 CPU 用法。

遵循所有评论的建议,即确保您使用的是 64 位

但是您还需要确保正在处理图像,否则迟早会 运行 内存不足。以下只是一个例子

if(picturebox1.Image != null)
   picturebox1.Image.Dispose();

picturebox1.Image = null;

OpenFileDialog ofDlg = new OpenFileDialog();
ofDlg.Filter = "Image files|*.png";
if (DialogResult.OK == ofDlg.ShowDialog())
{
     picturebox1.Image = Image.FromFile(ofDlg.FileName); //Out of memory.
}