使用 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# 的新位置时出现意外的系统异常