使用 savefiledialog 保存图像时出现问题

Posted

技术标签:

【中文标题】使用 savefiledialog 保存图像时出现问题【英文标题】:Issue while saving image using savefiledialog 【发布时间】:2012-06-15 15:09:38 【问题描述】:

我正在使用 savefiledialog 来保存图像。画布是图片框,加载的图像是位图。当我尝试保存它时,文件已创建但不知何故损坏。因为当我尝试再次加载图像或在不同的查看器中显示时它不起作用 - 我的意思是保存的文件已损坏。有一种保存图像的方法。

 private void saveFileDialog1_FileOk(object sender, CancelEventArgs e)
        

           System.IO.FileStream fs =
                (System.IO.FileStream)saveFileDialog1.OpenFile();

           try
           
               switch (saveFileDialog1.FilterIndex)
               
                   case 1:
                       canvas.Image.Save(saveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Bmp);
                       break;
                   case 2:
                       canvas.Image.Save(saveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
                       break;
                   case 3:
                       canvas.Image.Save(saveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Png);
                       break;
                   case 4:
                       canvas.Image.Save(saveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Tiff);
                       break;
               

           
           catch (Exception ex) 
           
               System.Console.WriteLine("Exception " + ex);
           

我还应该提到属性过滤器。 saveFileDialog1.Filter 有值:

bmp (*.bmp)|*.bmp|jpeg (*.jpeg)|*.jpeg|png (*.png)|*.png|tiff (*.tiff)|*.tiff

【问题讨论】:

检查以确保文件在保存到任何文件夹后格式正确? 我该如何检查呢?我保存它,所以文件例如:image.bmp 但我无法打开它,所以保存可能有问题。但我不知道问题出在哪里。 我的意思是只需右键单击文件并转到属性,可能会提供有关其无法保存的更多信息?不过我不确定 这是我首先做的,但它只给了我文件类型为 bmp 的信息。但它告诉我即使通过将 txt 重写为 bmp 将某些 .txt 文件更改为 .bmp。所以这些属性对我来说没用:/ 【参考方案1】:

我想问你为什么要排队

System.IO.FileStream fs =
    (System.IO.FileStream)saveFileDialog1.OpenFile();

但事实证明,这正是导致您的问题的原因。您正在将文件打开到FileStream。当它打开时,您使用canvas.Image.Save 将图像写入同一个文件。

它会引发异常,但由于您只是将异常写入控制台,因此您看不到它。

只要删除我提到的那一行,你的代码就可以工作了。

【讨论】:

谢谢,我忘记删除了。它是来自 MDSN 的基于 txt 文件的表单示例。现在它工作正常。谢谢。

以上是关于使用 savefiledialog 保存图像时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 saveFileDialog 在 C# 中保存图像? [复制]

尝试不重写文件并将其保存在 C# 的新位置时出现意外的系统异常

通过PHP保存png时出现深色图像

使用 UIImageWriteToSavedPhotosAlbum 保存图像时出现无法识别的选择器错误

尝试保存在本地编辑的图像时出现异常

使用 OpenCV VideoWriter 保存灰度图像时出现 Gstreamer 错误