一个 Python 测试框架,写小型测试简单,也能支撑应用和库的复杂功能测试。
- 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
通过 npm 安装命令行工具
npm install odiff-bin - 2
查看命令行帮助
odiff --help - 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 数据每日更新。
相关项目
1.5万3517PythonMIT更新于 18小时前
一体化 JavaScript/TypeScript 工具链,集运行时、打包器、测试运行器和包管理器于一个可执行文件。
9.6万5147RustOther更新于 6小时前
Swagger UI 可根据 OpenAPI/Swagger 规范文件在浏览器中生成可交互的 API 文档。
2.9万9251JavaScriptApache-2.0更新于 3天前
面向 AI 编程助手和测试套件的 Android 自动化工具,用自然语言驱动真机或模拟器。
1.3万1483PythonApache-2.0更新于 18天前
面向 Web 与移动应用的端到端测试框架,可用自然语言描述测试目标,由智能体驱动应用完成。
1.1万577TypeScriptApache-2.0更新于 13小时前
统一的 Web 开发工具链,通过一个 vp 命令整合 Vite、Vitest、Oxlint、Oxfmt 等工具,并管理 Node.js 与包管理器。
6380286RustMIT更新于 13小时前