이미지로 저장하려는 바이너리 데이터가 있습니다. 이미지를 저장하려고 할 때 이미지를 만드는 데 사용 된 메모리 스트림이 저장 전에 닫혔다면 예외가 발생합니다. 내가 이렇게하는 이유는 내가 동적으로 이미지를 만들고 있기 때문에 .. 메모리 스트림을 사용해야합니다.
이것은 코드입니다.
[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
block. 나는 originalBinaryDataStream2
사용이 끝나면 자동으로 폐기 되었다고 생각합니다 . 그리고 그것은 예외를 던질 것입니다.