Je crée une application de partage de bureau à distance dans laquelle je capture une image du bureau, je la compresse et je l'envoie au récepteur. Pour compresser l'image, je dois la convertir en octet [].
Actuellement j'utilise ceci:
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;
}
Mais je ne l'aime pas car je dois l'enregistrer dans un ImageFormat et cela peut également utiliser des ressources (ralentir) et produire des résultats de compression différents.J'ai lu sur l'utilisation de Marshal.Copy et memcpy mais je suis incapable de les comprendre.
Existe-t-il donc une autre méthode pour atteindre cet objectif?
MemoryStream
; c'est une ressource entièrement gérée, sauf si vous l'utilisez dans la communication à distance. Dans ces deux cas, il serait inapproprié de disposer de la ressource.