不推荐使用图像差异。
从他们的github:
我们在这个项目上不再有任何活跃的维护者,因此停止了维护。
作为替代,请查看替代项目,例如外观相同和像素匹配:
https://github.com/gemini-testing/looks-same
https://github.com/mapbox/pixelmatch
我个人使用像素匹配:
最小、最简单、最快的 JavaScript 像素级图像比较库,最初是为了比较测试中的屏幕截图而创建的。
具有准确的抗锯齿像素检测和感知色差指标。
灵感来自 Resemble.js 和 Blink-diff。与这些库不同,pixelmatch 大约有 150 行代码,没有依赖关系,并且适用于图像数据的原始类型数组,因此速度非常快,可以在任何环境(节点或浏览器)中使用。
const fs = require('fs');
const PNG = require('pngjs').PNG;
const pixelmatch = require('pixelmatch');
const img1 = PNG.sync.read(fs.readFileSync('img1.png'));
const img2 = PNG.sync.read(fs.readFileSync('img2.png'));
const {width, height} = img1;
const diff = new PNG({width, height});
const difference = pixelmatch(img1.data, img2.data, diff.data, width, height, {threshold: 0.1});
fs.writeFileSync('diff.png', PNG.sync.write(diff)); // see diff.png for the difference
const compatibility = 100 - dif * 100 / (width * height);
console.log(`${difference} pixels differents`);
console.log(`Compatibility: ${compatibility}%`);
在此处查找演示:https ://observablehq.com/@mourner/pixelmatch-demo
https://github.com/mapbox/pixelmatch