我正在使用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);
}
我还应该提到属性Filter。 saveFileDialog1.Filter具有值:
bmp (*.bmp)|*.bmp|jpeg (*.jpeg)|*.jpeg|png (*.png)|*.png|tiff (*.tiff)|*.tiff
答案 0 :(得分:1)
我会问为什么你有这条线
System.IO.FileStream fs =
(System.IO.FileStream)saveFileDialog1.OpenFile();
但事实证明,这正是造成问题的因素。您正在将文件打开到FileStream
。当它打开时,您使用canvas.Image.Save
将图像写入同一文件。
它会引发异常,但由于您只是将异常写入控制台,因此您无法看到它。
只需删除我提到的行,您的代码即可使用。