Erreur GDI lors de la conversion JPEG en MemoryStream
Problème :
La conversion d'images JPEG en flux de mémoire à l'aide de ConvertImageToByteArray
(ou de méthodes similaires) entraîne une erreur GDI générique :
<code>System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI+.</code>
Ce problème affecte uniquement les fichiers JPEG ; Les conversions PNG fonctionnent sans problème.
Cause fondamentale :
L'erreur provient de la fermeture prématurée du flux mémoire utilisé pour créer l'objet image avant d'enregistrer l'image.
Résolution :
La solution est de garder le flux mémoire ouvert tout au long du processus de sauvegarde de l'image :
<code class="language-csharp">using (var m = new MemoryStream()) { dst.Save(m, format); // ... other code ... return Image.FromStream(m); // MemoryStream remains open until the end of the using block }</code>
Remarques supplémentaires :
L'utilisation d'un flux mémoire est cruciale pour préserver le type MIME de l'image. Sans cela, le type MIME de l'image de sortie n'est pas défini, ce qui complique la gestion générique des erreurs.
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!