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