开发者社区> 问答> 正文

将图像转换为字节数组的最快方法

我正在制作远程桌面共享应用程序,在该应用程序中,我捕获了桌面的图像并将其压缩并将其发送到接收器。要压缩图像,我需要将其转换为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中,这可能还会消耗资源(Slow Down)以及产生不同的压缩结果。我已经阅读过使用Marshal.Copy和memcpy的内容,但是我无法了解他们。

那么还有其他方法可以实现这一目标吗? 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-08 10:59:00 394 0
1 条回答
写回答
取消 提交回答
  • 那么还有其他方法可以实现这一目标吗?

    不能。为了将图像转换为字节数组,您必须指定图像格式-就像将文本转换为字节数组时必须指定编码一样。

    如果您担心压缩伪影,请选择一种无损格式。如果您担心CPU资源,请选择一种不会压缩的格式-例如,仅原始ARGB像素。但这当然会导致更大的字节数组。

    请注意,如果选择了包含压缩的格式,则随后压缩字节数组毫无意义-几乎可以肯定没有任何效果。

    2020-02-08 10:59:30
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载