画像として保存したいバイナリデータがいくつかあります。画像を保存しようとすると、画像の作成に使用されたメモリストリームが保存前に閉じられていた場合、例外がスローされます。これを行う理由は、動的にイメージを作成しているためです。メモリストリームを使用する必要があります。
これはコードです:
[TestMethod]
public void TestMethod1()
{
// Grab the binary data.
byte[] data = File.ReadAllBytes("Chick.jpg");
// Read in the data but do not close, before using the stream.
Stream originalBinaryDataStream = new MemoryStream(data);
Bitmap image = new Bitmap(originalBinaryDataStream);
image.Save(@"c:\test.jpg");
originalBinaryDataStream.Dispose();
// Now lets use a nice dispose, etc...
Bitmap2 image2;
using (Stream originalBinaryDataStream2 = new MemoryStream(data))
{
image2 = new Bitmap(originalBinaryDataStream2);
}
image2.Save(@"C:\temp\pewpew.jpg"); // This throws the GDI+ exception.
}
誰かがストリームを閉じた状態で画像を保存する方法について何か提案はありますか?画像が保存された後にストリームを閉じることを忘れないように開発者に頼ることはできません。実際、開発者は、イメージがメモリストリームを使用して生成されたとは考えません(他のコードで発生するため)。
私は本当に混乱しています:(
using
ブロック内でimage2.Saveを実行する必要があります。originalBinaryDataStream2
使用終了時に自動で廃棄されたと思います。そして、それは例外を投げるでしょう。