Мы только что выпустили легковесную библиотеку RembrandtJS , которая делает именно это и работает как в браузере с использованием HTML5 Canvas2D API, так и на сервере через встроенный Node.JS замена node-canvas ,
Он принимает как BLOB-объекты, так и URL-адреса в качестве источников изображений, поэтому вы можете просто сделать это:
const rembrandt = new Rembrandt({
// `imageA` and `imageB` can be either Strings (file path on node.js,
// public url on Browsers) or Buffers
imageA: 'chrome://favicon/' + url_a,
imageB: 'chrome://favicon/' + url_b,
thresholdType: Rembrandt.THRESHOLD_PERCENT,
// The maximum threshold (0...1 for THRESHOLD_PERCENT, pixel count for THRESHOLD_PIXELS
maxThreshold: 0,
// Maximum color delta (0...255):
maxDelta: 0,
// Maximum surrounding pixel offset
maxOffset: 0,
})
// Run the comparison
rembrandt.compare()
.then(function (result) {
if(result.passed){
// do what you want
}
})
Как вы можете видеть, Рембрандт также позволяет вводить пороговые значения, если вашему домену требуется некоторая свобода действий в отношении разницы цвета или пикселя. Поскольку он работает как в браузере, так и на сервере (узле), он позволяет легко интегрироваться в ваш набор тестов.