Ich erstelle eine Remotedesktop-Freigabeanwendung, in der ich ein Bild des Desktops aufnehme, komprimiere und an den Empfänger sende. Um das Bild zu komprimieren, muss ich es in ein Byte [] konvertieren.
Derzeit benutze ich dies:
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;
}
Aber ich mag es nicht, weil ich es in einem ImageFormat speichern muss und das möglicherweise auch Ressourcen verbraucht (Verlangsamung) sowie unterschiedliche Komprimierungsergebnisse erzeugt. Ich habe weiter mit Marshal.Copy und memcpy gelesen, kann es aber nicht verstehe sie.
Gibt es also eine andere Methode, um dieses Ziel zu erreichen?
MemoryStream
; Es handelt sich um eine vollständig verwaltete Ressource, es sei denn, Sie verwenden sie beim Remoting. In beiden Fällen wäre es unangemessen, die Ressource zu entsorgen.