保存图像时出现GDI +一般错误

时间:2016-11-30 12:52:12

标签: c# save picturebox

我的问题是我无法覆盖最近打开过的图片。 所以,让我们想象我用openfiledialog打开文件:

OpenFileDialog OpenFileDialog1 = new OpenFileDialog();

OpenFileDialog1.InitialDirectory = "c:\\";
OpenFileDialog1.Filter = "Images|*.GIF;*.TIF;*.JPG;*.BMP";
OpenFileDialog1.RestoreDirectory = true;

if (OpenFileDialog1.ShowDialog() == DialogResult.OK)
{
      if ((OpenFileDialog1.OpenFile()) != null)
      {
           if (string.IsNullOrEmpty(OpenFileDialog1.FileName))
                return;

           pictureBox1.Image = Image.FromFile(OpenFileDialog1.FileName);
      }
}
OpenFileDialog1.Dispose();

在我对图片框进行了一些修正后(例如绘制了一些内容),我想用savefiledialog保存图像(到我打开图像的同一个文件中)。

SaveFileDialog saveFileDialog1 = new SaveFileDialog();

saveFileDialog1.Filter = "BMP File|*.BMP";
saveFileDialog1.RestoreDirectory = true;

if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
     pictureBox1.Image.Save(saveFileDialog1.FileName, ImageFormat.Bmp);
}

它给我一个错误(System.Runtime.InteropServices.ExternalException)也称为GDI +一般错误。所以,它基本上是一个错误,它拒绝我覆盖我最近打开过的文件。

1 个答案:

答案 0 :(得分:-1)

Image加载Image.FromFile()会使文件保持打开状态。

您可以Dispose()图片来释放资源,但我不认为PictureBox如果它仍然显示旧图像会对此感到满意。< / p>

或者,您可以在MemoryStream中加载文件内容并使用Image.FromStream()