ฉันกำลังสร้างแอปพลิเคชันการแชร์เดสก์ท็อประยะไกลซึ่งฉันจับภาพของเดสก์ท็อปและบีบอัดและส่งไปยังเครื่องรับ ในการบีบอัดภาพฉันต้องแปลงเป็นไบต์ []
ตอนนี้ฉันกำลังใช้สิ่งนี้:
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;
}
แต่ฉันไม่ชอบเพราะฉันต้องบันทึกใน ImageFormat และอาจใช้ทรัพยากร (ช้าลง) รวมทั้งให้ผลลัพธ์การบีบอัดที่แตกต่างกันฉันได้อ่านเกี่ยวกับการใช้ Marshal Copy และ memcpy แต่ฉันไม่สามารถทำได้ เข้าใจพวกเขา
แล้วมีวิธีอื่นอีกไหมที่จะบรรลุเป้าหมายนี้?
MemoryStream
; เป็นทรัพยากรที่มีการจัดการทั้งหมดเว้นแต่คุณจะใช้ในระยะไกล ในทั้งสองกรณีนี้การทิ้งทรัพยากรจะไม่เหมาะสม