Question

Bonjour, j'essaie de sauvegarder une image bitmap dans un programme d'édition d'image simple.

Voici le code:

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

[EDIT] Et j'ouvre l'image avec ce

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);

Ainsi, lorsque j'essaie, je reçois un GDI générique + erreur . J'ai donc trouvé une solution qui ressemble à ceci:

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

Mais lorsque j'essaie de le faire, je reçois une autre erreur me signalant que le fichier que je supprime est actuellement ouvert. C’est parce que c’est le fichier que j’essaie de modifier.

Comment puis-je " fermer " le fichier sans fermer l'application? Ou existe-t-il une solution alternative?

Merci!

Était-ce utile?

La solution

Il est difficile de dire sans voir le contexte dans lequel vous chargez le fichier, mais voici quelques suggestions:

  1. Avant d'enregistrer, copiez l'image existante dans une nouvelle image, fermez l'original, effectuez la suppression et enregistrez la copie.
  2. Enregistrez le fichier sous un nom de fichier aléatoire, supprimez l'original, renommez le fichier nommé aléatoirement en son nom d'origine.
  3. Chargez le fichier dans un flux de mémoire et utilisez la copie en mémoire pour initialiser l'image.

Personnellement, je choisirais l'option 3 dans la plupart des cas. Assurez-vous de disposer de l'image une fois que vous avez fini de l'utiliser: il est préférable de l'envelopper dans un bloc using ().

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top