我正在尝试制作一个屏幕共享程序,程序流程将是这样的:
- 截屏
- 切片为 9
- 比较新切片和旧切片
- 替换不同的切片
- 上传到网络(使用新切片)
但是我在替换切片时遇到了一些问题(在替换功能中)。从我搜索过的所有来源中,我需要将位图图像(切片)转换为字符串,然后我可以替换。但是没有将位图双精度数组转换为字符串的示例。
有没有可能在不将其转换为字符串的情况下替换图像?
我正在尝试制作一个屏幕共享程序,程序流程将是这样的:
但是我在替换切片时遇到了一些问题(在替换功能中)。从我搜索过的所有来源中,我需要将位图图像(切片)转换为字符串,然后我可以替换。但是没有将位图双精度数组转换为字符串的示例。
有没有可能在不将其转换为字符串的情况下替换图像?
可能最好的方法是执行Base64 编码
谷歌获取 base64 C++ 源代码。
为什么需要使用字符串作为中间体来替换位图数据?您可以很好地使用位图操作功能。另外,我无法理解您的算法。您将获得整个屏幕的位图。然后你把它切成 9 个部分(那些是角、边缘和中心?),将每个切片与它们的旧版本一一比较,替换更改的部分,然后上传整个位图?您不想单独上传每个切片,只上传更改的切片吗?否则,切片根本没有意义,不是吗?
现在,将数据转换为字符串确实可以让您使用字符串比较函数和其他类似的东西,但这是一个糟糕的主意。比较两个字节数组的最快方法是memcmp
使用msvcrt.dll
. 这个答案为您提供了解决方案 - https://stackoverflow.com/a/2038515/3032289,包括从原始位图中读取数据。
然后,您只需发送与其旧版本不同的切片,您就完成了,无需更换。