高压缩图像

时间:2010-08-20 00:41:10

标签: c# sockets compression

我正在尝试做一个“远程桌面查看器”。 为此,我需要发送用户的桌面 - 它有很多套接字信息...(特别是如果分辨率很高且信息接近5.3MB(1680X1050))

所以我开始使用GZIP流压缩,5.3MB变为500KB,然后我添加了自己的压缩算法(我认为它称为RLE) - 接近像素并以1)具有256>>的格式写入。 3 = 32种颜色(每种颜色为红色,蓝色,绿色)并写入一行中有多少像素具有相同的颜色。 + GZIP。

这使得压缩平均为60~65KB - 高达200KB,如果屏幕完全是白色,也可以低于5000.

现在 - 我想(并且还没有实现)关于传递每个帧之间的差异 - 对于我写的每条线,其中差异(像素之间)开始以及差异有多长。 好吧,它可以帮助 - 也许我平均每帧可以得到30KB。但对于插座而言,它很多。

有没有人能够成功解决这个问题? (当然......当然......)

2 个答案:

答案 0 :(得分:1)

有压缩图像的标准算法:例如JPEG。

进一步优化是了解图像的某些内容:例如,在桌面上,诸如Windows开始按钮,各种应用程序图标以及标题栏上的小部件等项目都是标准的:因此,不是发送像素值,你可以发送他们的逻辑标识符。

是的,人们已经成功解决了这个问题:编写远程桌面软件的人,包括开源VNC。

答案 1 :(得分:0)

您可能希望查看VNC的源代码。

大多数VNC服务器实现了几种不同形式的压缩。

相关问题