Masaüstünün bir görüntüsünü yakalayıp Sıkıştırıp alıcıya Gönderdiğim Uzak Masaüstü paylaşım uygulaması yapıyorum. Görüntüyü sıkıştırmak için onu bayta [] dönüştürmem gerekiyor.
Şu anda bunu kullanıyorum:
public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
return ms.ToArray();
}
public Image byteArrayToImage(byte[] byteArrayIn)
{
MemoryStream ms = new MemoryStream(byteArrayIn);
Image returnImage = Image.FromStream(ms);
return returnImage;
}
Ama bundan hoşlanmıyorum çünkü onu bir ImageFormat'a kaydetmem gerekiyor ve bu aynı zamanda kaynakları kullanabilir (Yavaşlama) ve farklı sıkıştırma sonuçları üretebilir. Marshal.Copy ve memcpy kullanmayı okudum ama yapamıyorum onları anla.
Peki bu hedefe ulaşmak için başka bir yöntem var mı?
MemoryStream
; atmanıza gerek yok ; uzaktan kumandada kullanmadığınız sürece, tamamen yönetilen bir kaynaktır. Her iki durumda da kaynağı elden çıkarmak uygun olmaz.