最佳答案
我有一些二进制数据,我想保存为一个图像。当我尝试保存图像时,如果用于创建图像的内存流在保存之前关闭,它会抛出一个异常。我这样做的原因是因为我是动态创建图像等。.我需要一个记忆流。
this is the code:
[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.
}
是否有任何人有任何建议,如何可以保存一个图像与流关闭?我不能指望开发人员记得在保存图像后关闭流。事实上,开发人员并不知道这个映像是使用内存流生成的(因为它发生在其他一些代码中,在其他地方)。
我真的很困惑: