Domanda

Ciao, sto cercando di salvare un'immagine bitmap in un programma di base per l'editor di immagini.

Ecco il codice:

         // then save it
        ImageBoxInApp.Image.Save(filename);

[EDIT] E sto aprendo l'immagine con questo

openFileDialog1.Title = "Select an Image";
        openFileDialog1.Filter = "All Files|*.*|Windows Bitmaps|*.bmp|JPEG Files|*.jpg";
        if (openFileDialog1.ShowDialog() == DialogResult.OK)
        {
            filename = openFileDialog1.FileName;
            Image img = System.Drawing.Image.FromFile(filename);

Quindi, quando provo questo, ricevo un errore GDI + generico . Quindi ho trovato una soluzione e sembra così:

        // Delete existing file first
        System.IO.File.Delete(filename);
        // then save it
        ImageBoxInApp.Image.Save(filename);

Ma quando provo a fare questo ricevo un altro errore che dice che il file che sto eliminando è attualmente aperto. Questo perché è il file che sto cercando di modificare.

Come posso chiudere " il file senza effettivamente chiudere l'applicazione? O esiste una soluzione alternativa?

Grazie!

È stato utile?

Soluzione

È difficile dirlo senza vedere un contesto su come caricare il file, ma ecco alcuni suggerimenti:

  1. Prima di salvare, copiare l'immagine esistente in una nuova immagine, chiudere l'originale, eseguire l'eliminazione e salvare la copia.
  2. Salva il file in un nome file casuale, elimina l'originale, rinomina il file con nome casuale con il nome originale.
  3. Carica il file in un flusso di memoria e usa la copia in memoria per inizializzare l'immagine.

Vado personalmente con l'opzione 3 per la maggior parte dei casi. Assicurati di eliminare l'immagine quando hai finito di usarla - è meglio se puoi avvolgerla in un blocco using ().

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top