Image.Save (..) генерирует исключение GDI +, потому что поток памяти закрыт

У меня есть некоторые двоичные данные, которые я хочу сохранить в виде изображения. Когда я пытаюсь сохранить изображение, оно выдает исключение, если поток памяти, использованный для создания изображения, был закрыт до сохранения. Причина, по которой я это делаю, заключается в том, что я динамически создаю изображения, и поэтому мне нужно использовать поток памяти.

это код:

[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.
}

Кто-нибудь есть какие-либо предложения о том, как я могу сохранить изображение с закрытым потоком? Я не могу рассчитывать на то, что разработчики не забудут закрыть поток после сохранения изображения. Фактически, у разработчика не было бы ИДЕИ, что изображение было сгенерировано с использованием потока памяти (потому что это происходит в каком-то другом коде, в другом месте).

Я действительно смущен :(

Ответы на вопрос(14)

Ваш ответ на вопрос