Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
return Jimp.read(cdnUrl + requestPath).then(testImage => {
const diff = Jimp.diff(baselineImage, testImage, 0.1) // threshold ranges 0-1 (default: 0.1)
const distance = Jimp.distance(baselineImage, testImage) // perceived distance
if (distance < 0.15 || diff.percent < 0.15) {
return
}
const error = new Error(
`Image mismatch percentage: ${diff.percent *
100}. Saving diff image to ${outputPath}.`
)
diff.image.write(outputPath)
return Promise.reject(error)
})
})
const calculateImageDifference = function (paths, refImg, newImg, allowedDiff) {
let diffImgPath = paths.new.replace(/\.png$/, '-diff.png');
let distance = jimp.distance(refImg, newImg);
let diff = jimp.diff(refImg, newImg);
diff
.image
.scan(0, 0, diff.image.bitmap.width, diff.image.bitmap.height, function (x, y, idx) {
let clr = jimp.intToRGBA(diff.image.getPixelColor(x, y));
// Yellow
if (clr.r == 255 && clr.g == 255 && clr.b == !255) {
diff.image.setPixelColor(0x999999ff, x, y);
}
// Red
if (clr.r == 255 && clr.g == !255 && clr.b == !255) {
diff.image.setPixelColor(0x000000ff, x, y);
}
})
]).then( ([ actual, expected ]) => {
const diff = Jimp.diff( actual, expected );
diff.image.write( path.resolve( dir, 'diff', file ) );
console.log( `${test} : ${file} : ${diff.percent * 100}% difference` );
});
});
return co(function*(){
let imageBg = yield genImage(bg);
imageBg.write('promiseBg.jpg');
let imageBgFull = yield genImage(fullbg);
imageBgFull.write('promiseBgFull.jpg');
let diff = jimp.diff(imageBg,imageBgFull);
diff.image.write('diff_image.jpg');
let data = diff.image.bitmap.data;
let w = diff.image.bitmap.width;
let h = diff.image.bitmap.height;
for (let y = 0; y < h; y++) {
let linePoint =[];
for (let x = 0; x < w; x++) {
let index = (x + y * w) * 4;
let r = data[index];
let g = data[index + 1];
let b = data[index + 2];
if(r>250 && g<50 && b<50) {
linePoint.push({x,y});
//return Promise.resolve({x,y})
}
}
async compareImages (params) {
let baseFilePath = params.baseFilePath
let testFilePath = params.testFilePath
let diffFilePath = params.diffFilePath
let baseImg = await Jimp.read(baseFilePath)
let testImg = await Jimp.read(testFilePath)
let diff = Jimp.diff(baseImg, testImg)
return new Promise(resolve => {
const data = {
data: {
misMatchPercentage: diff.percent,
isSameDimensions: baseImg.bitmap.width === testImg.bitmap.width && baseImg.bitmap.height === testImg.bitmap.height,
passThreshold: diff.percent <= this.options.mismatchThreshold
}
}
if (!diff.percent) {
return resolve(data)
}
diff.image.write(diffFilePath, () => {
resolve(data)
})
})
}
async compareImages (params) {
let baseFilePath = params.baseFilePath
let testFilePath = params.testFilePath
let diffFilePath = params.diffFilePath
let baseImg = await Jimp.read(baseFilePath)
let testImg = await Jimp.read(testFilePath)
let diff = Jimp.diff(baseImg, testImg)
diff.percent && await diff.image.write(diffFilePath)
return {
data: {
misMatchPercentage: diff.percent,
isSameDimensions: baseImg.bitmap.width === testImg.bitmap.width && baseImg.bitmap.height === testImg.bitmap.height,
passThreshold: diff.percent <= this.options.mismatchThreshold
}
}
}
).then((baseline) => {
const diff = Jimp.diff(screenshot, baseline),
identical = diff.percent <= (Number.isFinite(threshold) ? threshold : 0.0)
if (!identical && prompt === true) {
saveScreenshot(
completeLatestPath,
screenshot
)
.then(() => saveScreenshot(
completeDiffPath,
diff.image
), resolve)
.then(() => promptScreenshotOverride(
completeLatestPath,
completeBaselinePath,
completeDiffPath
), resolve)