2013-09-03 2 views
3

Пока я пытаюсь сохранить изображение, получая эту ошибку A generic error occurred in GDI+ Я искал эту ошибку и проверял права на запись для этой папки, а также проверял, что файл изображения не используется ничем другим (включая мой код). в то время как я пытаюсь сохранить изображение все еще получаю ту же ошибку, Где ошибкаОшибка: Общая ошибка произошла в GDI +. сохраняя изображение

public partial class AdsMaster : Form 
    { 
     OpenFileDialog ofd=null; 
     public AdsMaster() 
     { 
      InitializeComponent(); 
     } 

    private void browseButton_Click(object sender, EventArgs e) 
    { 
     ofd = new OpenFileDialog(); 
     ofd.Filter = "image files|*.jpg;*.jpeg;*.gif;*.png;*.bmp"; 
     DialogResult dr = new DialogResult(); 
     if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
     { 
      Image img = new Bitmap(ofd.FileName);//create the bitmap 
      string imgName = ofd.SafeFileName; 
      txtImagePath.Text = imgName; 
      pictureBox1.Image = img.GetThumbnailImage(350, 350, null, new IntPtr()); 
      ofd.RestoreDirectory = true; 
      img.Dispose(); 
     } 
    } 

    private void saveImage_Click(object sender, EventArgs e) 
    { 
     String str = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); 
     string path = str + "\\Image\\"; 
     Image img = new Bitmap(ofd.FileName); 
     string imgName = ofd.SafeFileName; 
     try 
     { 
       img.Save(path + imgName); //getting error at this line 
       MessageBox.Show("Image is saved"); 
       img.Dispose(); // dispose of your image     
     } 
     catch(Exception err) 
     { 
      MessageBox.Show(err.Message.ToString()); 
     } 

     }   
} 
+0

Каталог решений здесь: http://stackoverflow.com/questions/1053052/a-generic-error-occurred-in-gdi-jpeg-image-to- memystream? rq = 1 – mattytommo

+0

Может быть, вы пытаетесь сохранить изображение в том же файле, который был загружен из (это файл изображения в каталоге приложения)? – Rotem

+0

Я попытался сохранить его из другой папки, все еще получая такую ​​же ошибку – Durga

ответ

4

Я думаю, что проблема здесь может быть связано с тем, что замок находится на исходном изображении при вызове

Image img = new Bitmap(ofd.FileName); 

Должно быть сделано следующее трюк

private void saveImage_Click(object sender, EventArgs e) 
{ 
    string str = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); 
    string path = str + "\\Image\\"; 
    string imgName = ofd.SafeFileName; 

    try 
    { 
     File.Copy(ofd.FileName, path + imgName); 

     MessageBox.Show("Image is saved"); 
    } 
    catch (Exception err) 
    { 
     MessageBox.Show(err.Message.ToString()); 
    } 
}   
+0

Спасибо за это, помог мне! Хотя все, что мне нужно было сделать, это создать новый битмап из существующего. – Kyle

+0

http://stackoverflow.com/questions/1053052/a-generic-error-occurred-in-gdi-jpeg-image-to-memorystream/33324011#33324011 –

0

Я разрешаю эту ошибку, изменяя имя файла и путь к тому месту, где хранится файл. Вам необходимо проверить один из них:

1 - Имя_файла должно быть разным/не должно совпадать с именем других файлов, которые уже присутствуют в этом месте, где новый файл/изображение, которое вы хотите сохранить.

2- изменение (сохранение) местоположения нового файла с диска операционной системы. старайтесь избегать хранения нового файла/изображения на диске, на котором уже установлена ​​операционная система.

Ниже код работает для меня

  IWebdriver driver; 
     driver = new ChromeDriver("G:\\Selenium_Csharp\\Jar\\chromedriver_win32"); 
     driver.Navigate().GoToUrl("http://www.gmail.com"); 
     driver.Manage().Window.Maximize(); 

     Screenshot ss = ((ITakesScreenshot)driver).GetScreenshot(); 
     ss.SaveAsFile("e:\\pande", System.Drawing.Imaging.ImageFormat.Jpeg);