2012-01-18 13 views
21

esistente Ho questo codicesovrascrittura Immagine

private void saveImage() 
    { 
     Bitmap bmp1 = new Bitmap(pictureBox.Image); 
     bmp1.Save("c:\\t.jpg", System.Drawing.Imaging.ImageFormat.Jpeg); 
     // Dispose of the image files. 
     bmp1.Dispose(); 
    } 

ho già un'immagine t.jpg al mio disco "c: \".
volevo sostituirlo con una nuova immagine ogni volta che il mio programma è in esecuzione. ma un errore GDI + mostra
come posso risolvere il problema?

+0

possibile duplicazione di http://stackoverflow.com/questions/1036115/c-sharp-gdi-overwriting-an-image-using-save-method-of-bitmap –

+0

http://stackoverflow.com/questions/ 838063/overwriting-an-image-file-bitmap –

risposta

30

È necessario rimuovere l'immagine se già esiste.

private void saveImage() 
    { 
     Bitmap bmp1 = new Bitmap(pictureBox.Image); 

     if(System.IO.File.Exists("c:\\t.jpg")) 
       System.IO.File.Delete("c:\\t.jpg"); 

     bmp1.Save("c:\\t.jpg", System.Drawing.Imaging.ImageFormat.Jpeg); 
     // Dispose of the image files. 
     bmp1.Dispose(); 
    } 
+0

questo dovrebbe risolvere il mio problema ma un nuovo errore si presenta in 'System.IO.File.Delete'. Dice, * il processo non può accedere al file perché è utilizzato da un altro processo * –

+0

Hai qualche altra parte di codice che sta lavorando con quel file? –

+0

questo uno 'img1 = nuovo Bitmap (@" c: \\ t.jpg ", vero);'. questo va dall'inizio del programma –

0
private void saveImage(Image file, string filename){ 
    try 
    {  
     if(Directory.Exists("filepath"+filename)) 
     { 
      file.Dispose(); 
     } 
     else 
     { 
      Directory.CreateDirectory("filepath"+filename); 
      file.Save("filepath" + filename, Imageformat.Jpeg); 
     } 
    } 
    finally 
    { 
     file.Dispose(); 
    }   
} 

Questo ha funzionato per me.

+1

Questo non sostituisce il file esistente! Inoltre, sta controllando/creando directory invece di file e combinando i percorsi dovrebbe essere fatto usando 'Path.Combine' ... – Ronald

Problemi correlati