Image analysis and comparison for nodejs
npm install @syngrisi/node-resemble.jsImage analysis and comparison library for Node.js. This is a supported fork of node-resemble.js, which is a modification of Resemble.js.
This project does not need canvas or any other binary dependencies (uses sharp for image processing).
``bash`
npm install @syngrisi/node-resemble.js
or
`bash`
yarn add @syngrisi/node-resemble.js
##### Retrieve basic analysis on image.
`javascript`
var api = resemble(fileData).onComplete(function(data){
console.log(data);
/*
{
red: 255,
green: 255,
blue: 255,
brightness: 255
}
*/
});
##### Use resemble to compare two images.
`javascript`
var diff = resemble(file).compareTo(file2).ignoreColors().onComplete(function(data){
console.log(data);
/*
{
misMatchPercentage : 100, // %
isSameDimensions: true, // or false
dimensionDifference: { width: 0, height: -1 }, // defined if dimensions are not the same
getImageDataUrl: function(){}
}
*/
});
##### You can also change the comparison method after the first analysis.
`javascript`
// diff.ignoreNothing();
// diff.ignoreColors();
diff.ignoreAntialiasing();
##### Specify matching Box for image comparsion
`javascript`
diff.ignoreRectangles([[325,170,100,40], [10,10,200,200]]);`
- Ignores matched rectangles
- <[Arrayjavascript`
diff.includeRectangles([[325,170,100,40], [10,10,200,200]]);
- Compares only within given rectangles
- <[Array
##### Change the output display style.
`javascript``
resemble.outputSettings({
errorColor: {
red: 255,
green: 0,
blue: 255
},
errorType: 'movement',
transparency: 0.3
});
// resembleControl.repaint();
--------------------------------------
this.Then(/^Screenshot should match image "(.*)"$/, function (image, callback) {
browser.takeScreenshot().then(function(pngString) {
var screenshot = new Buffer(pngString, 'base64');
resemble(image)
.compareTo(screenshot)
.onComplete(function(data){
if (Number(data.misMatchPercentage) <= 0.01) {
callback();
} else {
data.getDiffImage().pack().pipe(fs.createWriteStream(image + 'diff.png'));
callback.fail(new Error("Screenshot '" + image+ "' differ " + data.misMatchPercentage + "%"));
}
});
});
})
--------------------------------------
Credits:
* Created by James Cryer and the Huddle development team.
* Lukas Svoboda - modification for node.js
* Kemal Erdem - modification
* Viktar Silakou - modification