我正在制作远程桌面共享应用程序,我在其中捕获桌面图像并压缩它并将其发送到接收器.要压缩图像,我需要将其转换为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;
}
Run Code Online (Sandbox Code Playgroud)
但我不喜欢它,因为我必须将它保存在ImageFormat中,并且还可能耗尽资源(慢速下降)以及产生不同的压缩结果.我已阅读使用Marshal.Copy和memcpy但我无法了解他们.
那么有没有其他方法来实现这一目标?