覆盖图像文件(位图)

时间:2009-05-08 03:08:17

标签: c# bitmap save

您好我正在尝试在基本图像编辑器程序中保存位图图像。

以下是代码:

         // then save it
        ImageBoxInApp.Image.Save(filename);

[编辑] 我正在使用此

打开图像
openFileDialog1.Title = "Select an Image";
        openFileDialog1.Filter = "All Files|*.*|Windows Bitmaps|*.bmp|JPEG Files|*.jpg";
        if (openFileDialog1.ShowDialog() == DialogResult.OK)
        {
            filename = openFileDialog1.FileName;
            Image img = System.Drawing.Image.FromFile(filename);

所以当我尝试这个时,我会收到一个Generic GDI+ error。所以我找到了solution,它看起来像这样:

        // Delete existing file first
        System.IO.File.Delete(filename);
        // then save it
        ImageBoxInApp.Image.Save(filename);

但是当我尝试这样做时,我收到另一个错误,说我正在删除的文件当前是打开的。这是因为那是我试图编辑的文件。

如何在不实际关闭应用程序的情况下“关闭”文件?或者有替代解决方案吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果没有看到关于如何加载文件的一些背景,很难说,但这里有几点建议:

  1. 保存之前,将现有图像复制到新图像,关闭原件,执行删除,然后保存副本。
  2. 将文件保存为随机文件名,删除原始文件,将随机命名的文件重命名为原始名称。
  3. 将文件加载到内存流中,并使用内存中的副本初始化图像。
  4. 对于大多数情况,我个人会选择#3选项。确保在使用完图像后处理图像 - 最好将图像包装在using()块中。