#png #lcs #bitmap

bin+lib lcs-png-diff

使用 LCS 算法的 PNG 差分工具

5 个不稳定版本

0.3.1 2022 年 8 月 15 日
0.3.0 2022 年 8 月 5 日
0.2.0 2022 年 8 月 4 日
0.1.1 2022 年 7 月 11 日
0.1.0 2022 年 5 月 14 日

#626 in 图像


用于 lcs-png-diff-server

MIT 许可证

23KB
463

lcs-png-diff

通过最长公共子序列算法生成 diff 位图(PNG)。该项目受 LCS-IMAGE-DIFF 启发。但它将 LCS-IMAGE-DIFF 和其依赖算法 crate LCS-DIFF 结合在一起。

这里还有一篇关于 LCS 差分算法的优质文章:diffing/

特性

  • 仅支持 PNG 图像作为输入和输出
  • 支持简单的命令行界面
  • 支持批量差分操作

示例

  • 比较一对 png 文件
lcs-png-diff \
    -b path/to/before.png \
    -a path/to/after.png \
    -d path/to/diff/result.png
  • 比较多对 png 文件
lcs-png-diff \
    -j path/to/pair.json

批量差分操作输入的 JSON 架构

{
    "$schema": "https://json-schema.fullstack.org.cn/draft-04/schema#",
    "type": "array",
    "items": [
        {
            "type": "object",
            "properties": {
                "before": {
                    "type": "string"
                },
                "after": {
                    "type": "string"
                },
                "result": {
                    "type": "string"
                }
            },
            "required": [
                "before",
                "after"
            ]
        }
    ]
}

result 属性是可选的。如果省略,则结果 png 文件将在原始 png 文件的确切位置生成,基础名称后追加 "_result"。例如

[
  {
    "before": "tests/fixtures/pricing.png",
    "after": "tests/fixtures/pricing_after.png"
  },
  {
    "before": "tests/fixtures/slider.png",
    "after": "tests/fixtures/slider_after.png"
  },
  {
    "before": "tests/fixtures/text-area.png",
    "after": "tests/fixtures/text-area_after.png"
  }
]

使用上述 JSON 内容作为批量操作输入将在相对路径 tests/fixtures/fixtures/ 中生成三个文件,分别命名为 pricing_result.png、slider_result.png 和 text-area_result.png。

基准测试

cargo criterion

许可证

MIT 许可证 (MIT)

版权所有 (c) 2022 @jianliao

以下条件准许任何人免费获得本软件及其相关文档副本(以下简称“软件”),在不受限制的情况下使用软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并准许向软件提供者提供软件的人这样做,前提是

上述版权声明和本许可声明应包含在软件的所有副本或实质性部分中。

本软件按“原样”提供,不提供任何形式的保证,无论是明示的、暗示的,还是基于商业目的的适用性或非侵权性,包括但不限于对适销性、特定用途的适用性和非侵权的保证。在任何情况下,作者或版权持有人不对因使用或无法使用本软件或与之相关的软件或文档而产生的任何索赔、损害或其他责任负责,无论这些责任是基于合同、侵权或任何其他法律理论,无论是在软件、使用或与软件或使用相关的其他活动中产生的。

依赖关系

~15MB
~132K SLoC