ホームページ >バックエンド開発 >C++ >閉じた MemoryStream にイメージを保存するときに GDI 例外を回避するにはどうすればよいですか?

閉じた MemoryStream にイメージを保存するときに GDI 例外を回避するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-16 20:46:15985ブラウズ

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

GDI の Image.Save() でのメモリ ストリームの閉鎖の問題

問題:

Image を使用してイメージを保存するとき.Save(...) をメモリ ストリームで使用する場合、保存前にメモリ ストリームが閉じられると、開発者は GDI 例外に遭遇する可能性があります。ただし、動的イメージ作成シナリオでは、保存する前にストリームを閉じる必要があります。

コード シナリオ:

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

このシナリオでは、メモリ ストリームoriginalBinaryDataStream2 が閉じられます。 using ブロックを終了するとき。その後、イメージ image2 を保存すると、GDI 例外が発生します。

解決策:

メモリ ストリームは明示的に閉じる必要がないため、手動で閉じる必要はありません。ただし、ビットマップ オブジェクトを閉じると、関連付けられたメモリ ストリームも自動的に閉じられます。

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

image2.Dispose(); // Also closes the memory stream

ビットマップを破棄すると、メモリ ストリームが適切に閉じられ、例外なく画像を保存できるようになります。

以上が閉じた MemoryStream にイメージを保存するときに GDI 例外を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。