我需要计算2个位图之间的差异并将其存储为补丁/差异,当应用于位图1时将导致位图2.反之则不是必需的。我希望补丁尽可能小,但无损。
一个简单的实现方法是找到所有更改的像素,确定它们的组合边界框并将位图2的内容存储在该框中。但是,如果例如图像的两个相对角上只有很小的变化,这将存储整个图像,浪费了大量空间。相反,最好分别包含2个更改。
我想已经存在一个很好的算法,用于例如VNC和视频压缩,但我无法找到它。你知道吗,它叫什么?
(在这种情况下,位图代表类似蠕虫的游戏中的可破坏地形。)
答案 0 :(得分:2)
嗯,我想出了一些不错的东西,至少对于位掩码(黑/白)图像。
获取位图1:
和位图2:
将他们排在一起:
裁剪边缘:
用PNG或其他无损图像编解码器压缩它,它应该处理大的黑色区域。