保存图像时出现 GDI+ 一般错误
getting GDI+ generic error while saving the image
我的问题是无法覆盖最近打开的图像。
所以,假设我用 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
.[=15 保存图像(到我打开图像的同一个文件) =]
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+ 一般错误。所以,这基本上是一个错误,拒绝覆盖我最近打开的文件。
Image.FromFile()
加载的 Image
使文件保持打开状态。
您可以 Dispose()
图片来释放资源,但我认为 PictureBox
如果它仍然显示旧图片,他们不会太高兴。
或者您可以在 MemoryStream
中加载文件的内容并使用 Image.FromStream()
。
我的问题是无法覆盖最近打开的图像。
所以,假设我用 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
.[=15 保存图像(到我打开图像的同一个文件) =]
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+ 一般错误。所以,这基本上是一个错误,拒绝覆盖我最近打开的文件。
Image.FromFile()
加载的 Image
使文件保持打开状态。
您可以 Dispose()
图片来释放资源,但我认为 PictureBox
如果它仍然显示旧图片,他们不会太高兴。
或者您可以在 MemoryStream
中加载文件的内容并使用 Image.FromStream()
。