2

我开始在 C++(Windows 平台)中实现某种远程截屏(类似 VNC)客户端/服务器软件,它只是通过网络传输屏幕更新(图像块)。

在通过网络发送之前,屏幕被分成块,每个图块都被压缩成 JPEG(我可能会使用 libjpeg-turbo)。所以我的问题是,为这些(已经 JPEG 压缩的)图块实现另一层压缩(无损)是否会很好,例如使用 zlib?

我感觉 zlib 在带宽方面不会有任何显着改善,因为 JPEG 文件已经被压缩了。我想避免更多的时间和金钱投资来实现额外的压缩层只是为了测试目的,所以我想听听你的建议。

PS:作为一个附带问题,有没有比将图块编码为 JPEG 更好的选择?也许马上无损压缩?上述技术(将屏幕划分为图块 => 选择更新的图块 => 将它们压缩为 JPEG => 通过网络发送)是实现此类软件的好方法吗?

任何形式的输入将不胜感激!

4

2 回答 2

3

JPEG 文件已经被压缩到几乎尽可能小。您可能会在标头上节省一些字节,但这可能会被额外压缩的开销所克服。

如果您需要快速检查以证明这一点,应该很容易压缩一组示例 jpeg 文件,看看有什么区别。

于 2011-06-07T18:21:50.187 回答
2

完全没有必要。

更好的选择是同时使用这两种方法:计算块中的颜色并对少数颜色使用 zlib/rle/etc,对许多颜色使用 jpeg。这是非常基本的方法。我建议你看看 VNC 的远程帧缓冲协议。

于 2011-06-07T18:02:15.110 回答