Resim olarak kaydetmek istediğim bazı ikili verilerim var. Görüntüyü kaydetmeye çalıştığımda, görüntüyü oluşturmak için kullanılan bellek akışı kaydetmeden önce kapatılmışsa bir istisna atıyor. Bunu yapmamın nedeni, dinamik olarak imajlar oluşturmam ve bu nedenle .. bir bellek akışı kullanmam gerekiyor.
kod bu:
[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.
}
Akış kapalıyken bir resmi nasıl kaydedebileceğime dair herhangi bir önerisi olan var mı? Görüntü kaydedildikten sonra geliştiricilerin akışı kapatmayı hatırlamalarına güvenemiyorum. Aslında, geliştiricinin görüntünün bir bellek akışı kullanılarak oluşturulduğuna dair HİÇBİR FİKİRİ olmazdı (çünkü başka bir kodda, başka bir yerde gerçekleşir).
Gerçekten kafam karıştı :(
using
bloğun içine kaydetmelisiniz . Kullanımın originalBinaryDataStream2
sonunda otomatik olarak atıldığını düşünüyorum . Ve bu istisnayı ortaya çıkarır.