2010-08-19 21 views
18

Bu similar question's yanıtların tümü dosyanın kaydedilmesini gerektirir. Ancak, dosyayı dönüştürmeye çalışıyorum ve sonra panoya kopyalayın.Panoya yapıştırmak için BMP'yi bellekte PNG'ye dönüştürün. Net

nasıl dosya sistemine kaydetmeden bir PNG bir Bitmap (veya herhangi bir görüntü) dönüştürebilirsiniz?

Güncelleme:
Ben (bu durumda Evernote olarak) bir uygulamaya görüntüyü yapıştırmak için çalışıyorum. Panoya bir görüntüyü kopyaladığınızda (ör. Tarayıcı aracılığıyla), görüntü formatını hatırlar ve yapıştırdığınız zaman, aynı kesin biçime sahip bir görüntü oluşturur. Örneğin, bir PNG'yi kopyalarsanız, PNG'yi yapıştırır. Bir JPG kopyalarsanız, JPG vb. Yapıştıracaktır.

Şu anda panoda bulunan herhangi bir görüntüyü almaya çalışıyorum, istediğim boyuta ölçeklendiriyorum ve sonra panoya bir PNG olarak sahip Evernote'a yapıştırıldığında, bir PNG oluşturacaktır. HTML FORMAT, CF_BITMAP, CF_DIB, CF_DIBV5: Tarayıcımdaki bir PNG resim kopyaladığınızda

, ben aşağıdaki biçimleri görüyoruz. Bu Evernote'un hangisinin yapıştırma için kullandığından emin değilim. CF_BITMAP olduğu izlenimi altındaydım, ancak aşağıdaki yorumları okuduktan sonra diğer formatlardan birini kullandığını tahmin ediyorum.

nasıl yapıştırılan zaman bir PNG olarak ele alınacaktır panoya bir görüntü yerleştirebilirsiniz?

+0

için Bitmap? Panonun görüntüleri jpg/png gibi bir dosya biçiminde kaydetmediğini düşünüyorum. Bir dosya olarak bir dizine yapışmayı planlamıyorsanız? – russau

+0

@russau: Ne yapmaya çalıştığımı açıklığa kavuşturmak için soruyu güncelledim. – Senseful

+0

_ "Bir görüntüyü panoya (ör. Tarayıcı aracılığıyla) kopyaladığınızda, görüntü biçimini hatırlar" _ - Bu tamamen yanlış. Muhtemelen bunu karıştırıyorsunuz çünkü bazı uygulamalar standart Windows panosunun saydamlık desteğine sahip olmaması gerçeğini telafi etmek için bir png bellek akışı kullanıyor. – Nyerguds

cevap

24

Kaydet yapıştırarak planlıyorsun bir MemoryStream

byte[] result = null; 
using (MemoryStream stream = new MemoryStream()) 
{ 
    bitmap.Save(stream, ImageFormat.Png); 
    result = stream.ToArray(); 
} 
+0

Ne tür bir sonuç çıkıyor? – Senseful

+1

byte dizisi, cevabı güncelleştiren – russau

+0

Lütfen 'Image' öğesine dönüştürmek için gerekli kodu içerebilir misiniz? (Şu anda bunu anlamaya çalışıyorum ve bunu bir yorum olarak yayınlayacağım, böylece kopyalayabilirsiniz/yapıştırın) – Senseful