デスクトップの画像をキャプチャして圧縮し、受信機に送信するリモートデスクトップ共有アプリケーションを作成しています。画像を圧縮するには、それをbyte []に変換する必要があります。
現在私はこれを使用しています:
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
。リモーティングで使用しない限り、完全に管理されたリソースです。これらのどちらの場合でも、リソースを破棄することは不適切です。