发现一个宝藏图片对比工具!速度比 ImageMagick 快 6 倍,还是开源的

大家好,我是 Immerse,一名独立开发者、内容创作者、AGI 实践者。

关注公众号:沉浸式趣谈,获取最新文章(更多内容只在公众号更新)

个人网站:yaolifeng.com 也同步更新。

转载请在文章开头注明出处和版权信息。

我会在这里分享关于编程独立开发AI干货开源个人思考等内容。

如果本文对您有所帮助,欢迎动动小手指一键三连(点赞评论转发),给我一些支持和鼓励,谢谢!


今天给大家分享一个超牛的图片对比工具 --- Odiff。

不仅速度快到飞起,还完全开源免费。

速度很快

官网拿它和常用的 ImageMagick、pixelmatch 对比了一下。

完整的网页截图:

ImageMagick 要 8.8 秒,pixelmatch 要 7.7 秒。

Odiff?1.2 秒搞定。

快了 6 倍不止。

更夸张的是 8K 大图对比:

别的工具要 9-10 秒,Odiff 只要 2 秒。

技术方面

Odiff 最早用 OCaml 写的,现在用 Zig 重写了。

支持 SSE2、AVX2、AVX512 和 NEON。

直接榨干 CPU 的并行计算能力,一次处理多个像素。

难怪能这么快。

功能很全

快归快,功能没缩水。

跨格式对比随便玩,jpg 和 png 直接比,不用转格式。

支持的格式也多:png、jpg、jpeg、webp、tiff 全都行。

抗锯齿检测、区域忽略这些高级功能也有。

用的是 YIQ NTSC 算法,判断视觉差异更准确。

不同布局的图片也能对比。

输出结果很详细,差异像素数量、百分比、对比图都给你生成好。

上手超简单

装个 npm 包就能用:

bash 复制代码
npm install odiff-bin

然后直接用命令行:

bash 复制代码
odiff base.png compare.png diff.png

第三个参数是输出的对比图,可以不写。

如果你想在 Node.js 代码里用,也很简单:

js 复制代码
const { compare } = require('odiff-bin');

const { match, reason } = await compare('path/to/first.png', 'path/to/second.png', 'path/to/diff.png');

console.log(match); // true 或 false
console.log(reason); // 不匹配的原因

返回结果会告诉你图片是否匹配。

如果不匹配,会给出原因:是像素差异,还是布局不同。

还有差异像素数量和差异百分比。

还有个服务器模式

对比大量图片的话,推荐用服务器模式。

Odiff 提供了服务器模式。

它会启动一个常驻进程,多次对比都用同一个进程,省去了启动开销。

Node.js 里用起来也很简单:

js 复制代码
const { ODiffServer } = require('odiff-bin');

const server = new ODiffServer();

const result1 = await server.compare('a.png', 'b.png', 'diff1.png');
const result2 = await server.compare('c.png', 'd.png', 'diff2.png');

server.stop();

还可以设置超时时间,防止某个对比卡住:

js 复制代码
await server.compare('a.png', 'b.png', 'diff.png', {
    threshold: 0.3,
    timeout: 5000,
});

服务器模式还会自动根据 CPU 核心数并行处理。

多个测试用例同时跑也不会阻塞。

集成也很方便

用 Playwright 的话,有专门的插件:

bash 复制代码
npm install playwright-odiff

然后在测试文件里:

js 复制代码
import 'playwright-odiff/setup';

expect(page).toHaveScreenshotOdiff('screenshot-name');

Cypress 也有对应的插件 cypress-odiff。

还有很多视觉回归测试服务直接集成了 Odiff。

比如 LostPixel、Argos CI、Visual Regression Tracker。

Argos CI 之前发推说,换到 Odiff 之后速度提升了 8 倍。

完全开源免费

Odiff 是 MIT 协议的开源项目。

代码全在 GitHub 上,维护也很活跃。

提供预编译的二进制文件,Windows、Mac、Linux 都支持。

npm 安装的话,会自动下载对应平台的版本,不用操心。

写在最后

做视觉回归测试,或者平时需要对比图片的话。

强烈推荐试试 Odiff。

速度快到飞起,功能还全,开箱即用。

关键还是开源免费的,良心。

项目地址:github.com/dmtrKovalen...

相关推荐
代码匠心10 小时前
AI 自动编程:一句话设计高颜值博客
前端·ai·ai编程·claude
_AaronWong11 小时前
Electron 实现仿豆包划词取词功能:从 AI 生成到落地踩坑记
前端·javascript·vue.js
cxxcode11 小时前
I/O 多路复用:从浏览器到 Linux 内核
前端
用户54330814419411 小时前
AI 时代,前端逆向的门槛已经低到离谱 — 以 Upwork 为例
前端
JarvanMo11 小时前
Flutter 版本的 material_ui 已经上架 pub.dev 啦!快来抢先体验吧。
前端
恋猫de小郭12 小时前
AI 可以让 WIFI 实现监控室内人体位置和姿态,无需摄像头?
前端·人工智能·ai编程
哀木12 小时前
给自己整一个 claude code,解锁编程新姿势
前端
程序员鱼皮12 小时前
GitHub 关注突破 2w,我总结了 10 个涨星涨粉技巧!
前端·后端·github
UrbanJazzerati12 小时前
Vue3 父子组件通信完全指南
前端·面试
是一碗螺丝粉12 小时前
5分钟上手LangChain.js:用DeepSeek给你的App加上AI能力
前端·人工智能·langchain