Repolode
dmtrKovalenko

dmtrKovalenko/odiff

一个基于 SIMD 优化的图片逐像素对比工具,提供命令行与 Node.js 接口,并生成差异图。

可替代:ImageMagick

Star
3,274
Fork
118
未关闭 Issue
16
最近提交
6天前

这是什么?

odiff 可以逐像素比较两张图片的视觉差异,并把差异区域高亮输出为 PNG 差异图。它主要面向视觉回归测试,即将测试截图与已保存的基准图进行比对,也可用于照片、AI 生成图等任意图片对比。

项目使用 Zig 编写,借助 SSE2、AVX2、AVX512 和 NEON 等 SIMD 指令加速。支持 PNG、JPEG、WebP、TIFF 格式,可以跨格式比较,也能处理布局不同的图片。可配置颜色阈值、抗锯齿检测、忽略指定区域,并能返回存在差异的行和列索引。

除独立命令行工具外,还提供 Node.js 接口(npm 包名 odiff-bin),其服务模式可复用进程,避免每次比较都启动新进程。项目已有 Playwright、Cypress、R 等集成,也被一些视觉测试服务用作比对引擎。

核心功能

  • 01支持 PNG、JPEG、WebP、TIFF 图片,并可跨格式比较。
  • 02基于 SSE2、AVX2、AVX512、NEON 指令集进行 SIMD 加速。
  • 03支持抗锯齿检测,并可忽略指定矩形区域。
  • 04支持布局不同的图片对比,并返回有差异的行列索引。
  • 05提供 Node.js 接口和可复用的服务模式。

适用场景

  • 在 CI 流水线中对网页做视觉回归测试。
  • 将 Playwright 或 Cypress 截图与已保存的基准图对比。
  • 检查不同构建之间生成图片或渲染结果是否发生变化。

快速上手

  1. 1

    通过 npm 安装命令行工具

    npm install odiff-bin
  2. 2

    查看命令行帮助

    odiff --help
  3. 3

    比较两张图片并输出差异图

    odiff <IMG1 path> <IMG2 path> [DIFF output path]

使用前须知

  • README 仅称提供大多数平台的预编译二进制文件,未说明具体支持范围。

标签

常见问题

odiff 是什么?
一个基于 SIMD 优化的图片逐像素对比工具,提供命令行与 Node.js 接口,并生成差异图。 odiff 可以逐像素比较两张图片的视觉差异,并把差异区域高亮输出为 PNG 差异图。它主要面向视觉回归测试,即将测试截图与已保存的基准图进行比对,也可用于照片、AI 生成图等任意图片对比。
odiff 可以免费使用吗?用的什么许可证?
odiff 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
odiff 还在维护吗?
活跃维护中。odiff 最近一次提交是在 2026年10月13日。
odiff 适合用来做什么?
在 CI 流水线中对网页做视觉回归测试。 将 Playwright 或 Cypress 截图与已保存的基准图对比。 检查不同构建之间生成图片或渲染结果是否发生变化。
odiff 怎么安装和运行?
通过 npm 安装命令行工具: npm install odiff-bin 查看命令行帮助: odiff --help 比较两张图片并输出差异图: odiff <IMG1 path> <IMG2 path> [DIFF output path]
在哪里获取 odiff?
源代码和安装说明在 GitHub 上:https://github.com/dmtrKovalenko/odiff

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目