Heim >Backend-Entwicklung >C++ >Warum wirft das Konvertieren eines JPEG in einen MemoryStream einen 'generischen Fehler in der GDI' -Ausnahme aus?

Warum wirft das Konvertieren eines JPEG in einen MemoryStream einen 'generischen Fehler in der GDI' -Ausnahme aus?

Barbara Streisand
Barbara StreisandOriginal
2025-01-26 15:31:09283Durchsuche

Why Does Converting a JPEG to a MemoryStream Throw a

GDI -Fehler während des JPEG -zu MemoryStream -Konvertierens

Ausgabe:

JPEG -Bilder konvertieren in Speicherströmen mit ConvertImageToByteArray (oder ähnlichen Methoden) in einen generischen GDI -Fehler:

<code>System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI+.</code>

Dieses Problem betrifft nur JPEGs; PNG -Conversions funktionieren ohne Probleme.

Grundursache:

Der Fehler stammt aus dem vorzeitigen Schließen des Speicherstroms, mit dem das Bildobjekt vor das Bild gespeichert wird.

Auflösung:

Die Lösung besteht darin, den Speicherstrom während des Bildspartvorgangs offen zu halten:

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

Weitere Hinweise:

Die Verwendung eines Speicherstroms ist entscheidend für die Erhaltung des MIME -Typs des Bildes. Ohne ihn ist der MIME -Typ des Ausgangsbildes undefiniert und kompliziert die allgemeine Fehlerbehandlung.

Das obige ist der detaillierte Inhalt vonWarum wirft das Konvertieren eines JPEG in einen MemoryStream einen 'generischen Fehler in der GDI' -Ausnahme aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn