Problem:
Beim Speichern eines Bildes mit Image .Save(...) mit einem Speicherstream verwenden, können Entwickler auf eine GDI-Ausnahme stoßen, wenn der Speicherstream vor dem Speichern geschlossen wird. In dynamischen Bilderstellungsszenarien ist jedoch das Schließen des Streams vor dem Speichern erforderlich.
Code-Szenario:
Bitmap image2; using (Stream originalBinaryDataStream2 = new MemoryStream(data)) { image2 = new Bitmap(originalBinaryDataStream2); }
In diesem Szenario wird der Speicherstream originalBinaryDataStream2 geschlossen beim Verlassen des using-Blocks. Anschließend führt das Speichern des Bildes image2 zur GDI-Ausnahme.
Lösung:
Da Speicherströme kein explizites Schließen erfordern, ist es nicht erforderlich, sie manuell zu schließen. Durch das Schließen des Bitmap-Objekts wird jedoch automatisch der zugehörige Speicherstrom geschlossen.
Bitmap image2; using (Stream originalBinaryDataStream2 = new MemoryStream(data)) { image2 = new Bitmap(originalBinaryDataStream2); } image2.Dispose(); // Also closes the memory stream
Durch das Löschen der Bitmap wird der Speicherstrom ordnungsgemäß geschlossen, sodass das Bild ohne Ausnahmen gespeichert werden kann.
Das obige ist der detaillierte Inhalt vonWie vermeide ich GDI-Ausnahmen beim Speichern von Bildern in einem geschlossenen MemoryStream?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!