Sto realizzando un'applicazione di condivisione Desktop remoto in cui acquisisco un'immagine del desktop e la comprimo e la invio al destinatario. Per comprimere l'immagine devo convertirla in un byte [].
Attualmente sto usando questo:
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;
}
Ma non mi piace perché devo salvarlo in un ImageFormat e questo potrebbe anche utilizzare risorse (Slow Down) oltre a produrre risultati di compressione diversi.Ho letto di usare Marshal.Copy e memcpy ma non sono in grado di farlo capiscili.
Quindi esiste un altro metodo per raggiungere questo obiettivo?
MemoryStream
; è una risorsa interamente gestita, a meno che non la utilizzi in remoto. In entrambi i casi sarebbe inopportuno smaltire la risorsa.