Eu tenho alguns dados binários que quero salvar como uma imagem. Quando tento salvar a imagem, ele lança uma exceção se o fluxo de memória usado para criar a imagem foi fechado antes de salvar. A razão de eu fazer isso é porque estou criando imagens dinamicamente e, como tal ... preciso usar um fluxo de memória.
este é o código:
[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.
}
Alguém tem alguma sugestão de como eu poderia salvar uma imagem com o stream fechado? Não posso contar com os desenvolvedores para lembrar de fechar o fluxo depois que a imagem for salva. Na verdade, o desenvolvedor NÃO teria NENHUMA IDÉIA de que a imagem foi gerada usando um fluxo de memória (porque isso acontece em algum outro código, em outro lugar).
Estou realmente confuso :(
using
bloco. Acho que o originalBinaryDataStream2
foi descartado automaticamente no final do uso. E isso lançaria a exceção.