Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 高压缩图像_C#_Sockets_Compression - Fatal编程技术网

C# 高压缩图像

C# 高压缩图像,c#,sockets,compression,C#,Sockets,Compression,我正在尝试做一个“远程桌面查看器”。 为此,我需要发送用户的桌面-这是关于套接字的大量信息…(特别是当分辨率高且信息接近5.3MB(1680X1050)时) 所以我开始用GZIP流进行压缩,5.3MB变成了500KB,然后我添加了我自己的压缩算法(我想它叫RLE)——取近像素,以1)256>>3=32种颜色的格式写入(红色、蓝色、绿色各一种),并写入一行中有多少像素具有相同的颜色GZIP 这使得压缩平均为60~65KB—高达200KB,如果屏幕完全为白色,压缩也可能低于5000 现在-我想(还没

我正在尝试做一个“远程桌面查看器”。 为此,我需要发送用户的桌面-这是关于套接字的大量信息…(特别是当分辨率高且信息接近5.3MB(1680X1050)时)

所以我开始用GZIP流进行压缩,5.3MB变成了500KB,然后我添加了我自己的压缩算法(我想它叫RLE)——取近像素,以1)256>>3=32种颜色的格式写入(红色、蓝色、绿色各一种),并写入一行中有多少像素具有相同的颜色GZIP

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

现在-我想(还没有实现)传递每一帧之间的差异-对于每一行,我写下差异(像素之间)的起始位置和差异的长度。 好吧,这会有帮助-也许我可以得到平均每帧30KB。但对于插座来说,这太多了


有人成功地解决了这个问题吗?(当然还有……)

您可能希望查看的源代码


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

您可能希望查看的源代码


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

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

进一步的优化是了解图像:例如,在桌面上,Windows开始按钮、各种应用程序图标和标题栏上的小部件等项目是标准的:因此,您可以发送它们的逻辑标识符,而不是发送它们的像素值


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

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

进一步的优化是了解图像:例如,在桌面上,Windows开始按钮、各种应用程序图标和标题栏上的小部件等项目是标准的:因此,您可以发送它们的逻辑标识符,而不是发送它们的像素值


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

您考虑过使用RDP或VNC吗?这两种协议都能实现您想要实现的功能。人们已经提出了比gzip或简单的游程编码更复杂、更复杂的压缩算法。这是一个完整的研究课题。远程查看特别有趣,因为您可以通过只编码连续屏幕之间的差异而不是整个屏幕来节省带宽。大多数当前的软件已经做到了这一点,但坦率地说,远程桌面和VNC离当前研究的高度还很远。您考虑过使用RDP或VNC吗?这两种协议都能实现您想要实现的功能。人们已经提出了比gzip或简单的游程编码更复杂、更复杂的压缩算法。这是一个完整的研究课题。远程查看特别有趣,因为您可以通过只编码连续屏幕之间的差异而不是整个屏幕来节省带宽。大多数当前的软件已经做到了这一点,尽管坦率地说,远程桌面和VNC离当前研究的高度还很远。非常感谢(所有人),顺便说一下,是的,我试过JPG(和gif)。。。当质量为0时,它会变为约60KB,然后图片一点也不清晰。谢谢,顺便说一句,我会看看这个“VNC”——只发送更改后的像素的想法和你说的差不多——我不会发送每张图片。再次感谢。@Ohad JPG是“有损”压缩;有无损算法,包括我认为例如GIF和PNG.GIF比JPG丢失更多的数据。。。PNG可能很好(我没有检查PNG),但压缩不够。GF不会丢失锐度,但会丢失颜色深度:它是8位颜色。远程桌面的最终用户可以接受/受益于减少颜色深度以提高性能。大多数包含文本和UI控件的普通窗口只使用少量颜色,因此可以将其调整为256色。当然,它必须自适应地完成(仅适用于文本或空白的矩形)非常感谢(所有人),顺便说一句,是的,我试过JPG(和gif)。。。当质量为0时,它会变为约60KB,然后图片一点也不清晰。谢谢,顺便说一句,我会看看这个“VNC”——只发送更改后的像素的想法和你说的差不多——我不会发送每张图片。再次感谢。@Ohad JPG是“有损”压缩;有无损算法,包括我认为例如GIF和PNG.GIF比JPG丢失更多的数据。。。PNG可能很好(我没有检查PNG),但压缩不够。GF不会丢失锐度,但会丢失颜色深度:它是8位颜色。远程桌面的最终用户可以接受/受益于减少颜色深度以提高性能。大多数包含文本和UI控件的普通窗口只使用少量颜色,因此可以将其调整为256色。当然,它必须自适应地完成(仅适用于文本或空白的矩形)