>我在客户端上有一个'旧'RGBA画布,在服务器上有一个相同图像的较新版本。它们之间的视觉差异很小。
我希望服务器能够向客户端发送一些"差异",以便能够更新其图像以匹配新版本,而无需再次发送整个图像数据。
两帧透明 webm 视频将是理想的(即使用 webm 对差异进行编码(,但对具有透明度的 webm 的硬件支持非常糟糕,并且浏览器对从视频中提取特定帧的支持也非常差。
相反,我正在考虑使用硬光混合模式,它应该允许我将单个图像发送到客户端,并将任何 RGBA 像素转换为任何其他像素(误差幅度为 1(。
我应该如何生成差异图像? 哪种混合模式组合可以生成diff
如果new = hardlight(old, diff)
让 Ch、Cw、Cd 成为您拥有的值、您想要的值和差异值:
if (Cw > Ch)
Cd = 1 - (1-Cw)/2(1-Ch)
else if (Cw < Ch)
Cd = Cw/2Ch
else
Cd = 0.5