У меня есть некоторые двоичные данные, которые я хочу сохранить в виде изображения. Когда я пытаюсь сохранить изображение, оно выдает исключение, если поток памяти, использованный для создания изображения, был закрыт до сохранения. Причина, по которой я это делаю, заключается в том, что я динамически создаю изображения и, следовательно, мне нужно использовать поток памяти.
это код:
[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.
}
У кого-нибудь есть предложения, как мне сохранить изображение с закрытым потоком? Я не могу рассчитывать на то, что разработчики не забудут закрыть поток после сохранения изображения. Фактически, у разработчика не было бы ИДЕИ, чтобы изображение было создано с использованием потока памяти (потому что это происходит в каком-то другом коде, в другом месте).
Я действительно запутался: (