Maison > développement back-end > C++ > Comment éviter les exceptions GDI lors de l'enregistrement d'images dans un MemoryStream fermé ?

Comment éviter les exceptions GDI lors de l'enregistrement d'images dans un MemoryStream fermé ?

Mary-Kate Olsen
Libérer: 2025-01-16 20:46:15
original
974 Les gens l'ont consulté

How to Avoid GDI  Exceptions When Saving Images to a Closed MemoryStream?

Problème de fermeture du flux de mémoire avec Image.Save() dans GDI

Problème :

Lors de l'enregistrement d'une image à l'aide d'Image .Save(...) avec un flux mémoire, les développeurs peuvent rencontrer une exception GDI si le flux mémoire est fermé avant l'enregistrement. Cependant, dans les scénarios de création d'images dynamiques, la fermeture du flux avant l'enregistrement est nécessaire.

Scénario de code :

Bitmap image2;
using (Stream originalBinaryDataStream2 = new MemoryStream(data))
{
    image2 = new Bitmap(originalBinaryDataStream2);
}
Copier après la connexion

Dans ce scénario, le flux mémoire originalBinaryDataStream2 est fermé en quittant le bloc using. Par la suite, l'enregistrement de l'image image2 provoque l'exception GDI.

Solution :

Les flux mémoire ne nécessitant pas de fermeture explicite, il n'est pas nécessaire de les fermer manuellement. Cependant, la fermeture de l'objet Bitmap fermera automatiquement le flux mémoire associé.

Bitmap image2;
using (Stream originalBinaryDataStream2 = new MemoryStream(data))
{
    image2 = new Bitmap(originalBinaryDataStream2);
}

image2.Dispose(); // Also closes the memory stream
Copier après la connexion

En supprimant le Bitmap, le flux mémoire est fermé correctement, garantissant que l'image peut être enregistrée sans exception.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal