我的问题是我无法覆盖最近打开过的图片。
所以,让我们想象我用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 +一般错误。所以,它基本上是一个错误,它拒绝我覆盖我最近打开过的文件。
答案 0 :(得分:-1)
Image
加载Image.FromFile()
会使文件保持打开状态。
您可以Dispose()
图片来释放资源,但我不认为PictureBox
如果它仍然显示旧图像会对此感到满意。< / p>
或者,您可以在MemoryStream
中加载文件内容并使用Image.FromStream()
。