我正在制作远程桌面共享应用程序,其中我捕获桌面图像并进行压缩,并将其发送给接收者。为了压缩图像,我需要将其转换为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
;它是完全托管的资源,除非您在远程使用它,在这两种情况下处理该资源是不适当的。 - Jon Skeet