voluptasquisquam
Version:
Image processing and manipulation in JavaScript
70 lines (46 loc) • 2.21 kB
JavaScript
import {Image, load} from 'test/common';
import {asc as sortAsc} from 'num-sort';
import 'should';
describe('we check mask', function () {
it('should yield the right mask size and value', function () {
return load('BW5x5.png').then(function (img) {
img.width.should.equal(5);
img.height.should.equal(5);
let roiManager = img.getRoiManager();
let mask = img.mask({invert: true});
roiManager.fromMask(mask);
let roiIDs = roiManager.getRoiIds().sort(sortAsc);
roiIDs.should.eql([-1, 1, 2]);
let rois = roiManager.getRois();
rois.should.be.an.instanceof(Array).and.lengthOf(3);
rois.sort(function (a, b) {
return a.mask.sizes[0] - b.mask.sizes[0];
});
rois[0].mask.sizes.should.eql([1, 1]);
rois[1].mask.sizes.should.eql([3, 3]);
rois[2].mask.sizes.should.eql([5, 5]);
let roiMask = rois[0].mask;
Array.from(roiMask.data).should.eql([128]);
let roiFilledMask = rois[0].filledMask;
Array.from(roiFilledMask.data).should.eql([128]);
roiMask = rois[1].mask;
Array.from(roiMask.data).should.eql([247, 128]);
roiFilledMask = rois[1].filledMask;
Array.from(roiFilledMask.data).should.eql([255, 128]);
roiMask = rois[2].mask;
Array.from(roiMask.data).should.eql([252, 99, 31, 128]);
roiFilledMask = rois[2].filledMask;
Array.from(roiFilledMask.data).should.eql([255, 255, 255, 128]);
let centerMask = rois[0].centerMask;
centerMask.position.should.eql([1, 1]);
Array.from(centerMask.data).should.eql([93, 0]);
let contourMask = rois[1].contourMask;
contourMask.position.should.eql([1, 1]);
Array.from(contourMask.data).should.eql([247, 128]);
let masks = roiManager.getMasks();
let painted = new Image(5, 5);
painted.paintMasks(masks);
Array.from(painted.data).slice(0, 8).should.eql([255, 0, 0, 255, 255, 0, 0, 255]);
});
});
});