2012-06-15 49 views
1

我正在使用savefiledialog保存圖像。畫布是picturebox,加載的圖像是位圖。當我嘗試保存它時,文件被創建,但以某種方式損壞。因爲當我嘗試再次加載圖像或在不同的查看器中顯示它不起作用 - 我的意思是保存的文件已損壞。有一種保存圖像的方法。使用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

檢查以確保該文件在保存到任何文件夾後是正確的格式? – Alex

+0

我該如何檢查?我保存它,所以文件是例如:image.bmp,但我無法打開它,所以可能存在保存問題。但我不知道問題出在哪裏。 – user1097772

+0

我的意思是隻需右鍵單擊該文件並轉至屬性,可以提供有關未保存的更多信息?我不確定 – Alex

回答

1

我要問,爲什麼你也行

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

但事實證明,這正是導致您的問題就行了。您正在將該文件打開爲FileStream。當它打開時,您使用canvas.Image.Save將圖像寫入同一個文件。

它引發一個異常,但是因爲您只是將異常寫入控制檯,所以您沒有看到它。

只是刪除我提到的行,你的代碼將工作。

+0

謝謝,我忘了刪除它。它是基於txt文件的MDSN的一個例子。現在它工作正常。謝謝。 – user1097772