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

时间:2018-07-04 08:04:40

标签: c# winforms out-of-memory .net-3.5

简报

我想在我的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像素)的图像之前,一切都可以正常工作。

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

现在,只要我运行上面的代码,它就会给我一个例外

  

内存不足。

我不明白这里出了什么问题,因为我的PC上安装了 8GB的内存,那么内存怎么了?下面是出现此错误消息时我的CPU使用率。

enter image description here

1 个答案:

答案 0 :(得分:2)

遵循所有评论的摘要,即确保您使用的是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.
}