2012-06-15 3 views
1

Я использую savefiledialog для сохранения изображения. Canvas - это изображение, а загруженное изображение - растровое изображение. Когда я пытаюсь сохранить его, файл создается, но как-то поврежден. Причина, когда я пытаюсь снова загрузить изображение или показать в другом телезрителе, не работает - я имею в виду, что сохраненный файл поврежден. Существует способ сохранения изображения.Проблема при сохранении изображения с помощью 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

Спасибо, я забыл удалить его. Это пример формы из MDSN, основанный на txt-файле. Теперь он работает нормально. Благодарю. – user1097772

Смежные вопросы