@syngrisi/syngrisi
Version:
Syngrisi - Visual Testing Tool
52 lines • 1.6 kB
JavaScript
// src/server/lib/comparison/compareImagesNode.ts
import resemble from "@syngrisi/node-resemble.js";
async function streamToBuffer(stream) {
return new Promise((resolve, reject) => {
const data = [];
stream.on("data", (chunk) => {
data.push(chunk);
});
stream.on("end", () => {
resolve(Buffer.concat(data));
});
stream.on("error", (err) => {
reject(err);
});
});
}
function compareImages(image1, image2, options) {
return new Promise((resolve, reject) => {
try {
const ignoreTransform = {
antialiasing: "ignoreAntialiasing",
colors: "ignoreColors",
nothing: "ignoreNothing"
};
const ignoreMethod = ignoreTransform[options.ignore] ? ignoreTransform[options.ignore] : "ignoreNothing";
const outputOpts = options.output;
resemble.outputSettings(outputOpts);
let ignoredRect;
if (options.ignoreRectangles) {
ignoredRect = options.ignoreRectangles.map((it) => {
delete it.name;
return [it.left, it.top, it.right - it.left, it.bottom - it.top];
});
}
resemble(image1).compareTo(image2)[ignoreMethod]().ignoreRectangles(ignoredRect).onComplete(async (data) => {
console.log(data);
const stream = await data.getDiffImage();
const buffer = await streamToBuffer(stream.pack());
data.getBuffer = function() {
return buffer;
};
resolve(data);
});
} catch (e) {
reject(e);
}
});
}
export {
compareImages as default
};
//# sourceMappingURL=compareImagesNode.js.map