如何计算“远程桌面”共享的最小增量?

时间:2011-11-29 18:10:13

标签: c#

市场上有很多免费的桌面共享实用程序软件,但我正在考虑首次使用c#编写自己的桌面共享实用程序。该实用程序将在两台机器上运行。第一次发件人应用程序将其桌面图像的完整图像发送到另一台名为receiver的计算机。在接收机上运行的应用程序只接收图像并显示在它自己的窗口上。第二次发送者将获取其自己桌面的当前快照并与之前的桌面进行比较,并仅向第二台机器发送差异,以便通过网络发送最小数据。如果没有找到差异,则不通过网络向另一台机器发送任何内容。

所以我一直在寻找图像比较代码,发现很多,但没有人以这种方式提供代码以形成差异的第三个图像。所以我的问题是,当差异被发送到第二台机器时,第二台机器应该形成第三张图像,其中包含不同的图像数据以及之前的图像数据。

没有任何逻辑可以编写代码来解决数据与先前图像的差异。请帮我概念或代码。感谢

2 个答案:

答案 0 :(得分:2)

将屏幕划分为多块瓷砖的一种简单方法 - 比如每个40x40像素的大小(我刚刚完成了这个)。

然后,对于每个图块,只需将其与之前的图块进行比较,然后仅发送“脏”图块及其位置。

这种方法也可以简单地扩展到以动态方式工作(例如,递归地分割)。另外,不要忘记图像压缩(例如PNG),这实际上可以从发送更大的蒙版图块组中受益。

快乐的编码。

答案 1 :(得分:2)

首先,您可以查看AForge Difference Class

  

差异滤镜 - 获取叠加和源图像之间的差异。

相关问题