SORU
3 Aralık 2008, ÇARŞAMBA


Resim.Kaydet(..) hafıza stream kapalı olduğu için GDI bir istisna atar

görüntü olarak kaydetmek istiyorum bazı ikili veri var. Görüntüyü kurtarmak için çalışırken, bellek akışı görüntüyü oluşturmak için kullanılan, kaydetmeden önce kapatılmış bir özel durum atar. Bu nedenle dinamik olarak resimleri oluşturma ve hafıza stream kullanmam lazım .. gibi olmam.

bu kod

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

Herkes akışı kapalı bir görüntü kurtarabilirim nasıl herhangi bir öneriniz var mı? Görüntü kaydedildikten sonra geliştiriciler akışı kapatmak için hatırlamak itimat edemem. Aslında, geliştirici görüntü oluşturulan HİÇBİR FİKRİM bellek akışı başka bir kod, başka bir yerde olur çünkü () kullanarak olurdu.

Gerçekten kafam karıştı :(

CEVAP
3 Aralık 2008, ÇARŞAMBA


Bir MemoryStream gibi, gerçekten yokgerekakış kapatın - Kötü bir şey varsa, büyük ihtimalle tek kullanımlık neyse olan her şeyi ortadan kaldırmak için iyi bir uygulama olsa da, sen istemezsen olmaz. (Bu konuda daha fazla bilgi için this question.)

Ancak, sengerekirbit Eşlem yardımcı olduğu ve bu senin için akış kapanacak. Bit Eşlem verdikten sonra temel olarak yapıcı bir akış "stream ve yakın olmamalıdır. sahibi the docs for that constructor dediği gibi:

Bu akım açık tutmalısınız bit Eşlem ömür boyu.

Tüm belgeler bitmap elden zaman akışı yakın söz bulamıyorum, ama bu oldukça kolay doğrulamak gerekir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Edgar flores

    Edgar flores

    7 HAZİRAN 2006
  • Jonathan Leack

    Jonathan Lea

    26 ŞUBAT 2007
  • Matt Stokes

    Matt Stokes

    22 Ocak 2008