123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356 |
- import { Jimp, mkJGD } from '@jimp/test-utils';
- import configure from '@jimp/custom';
- import crop from '../src';
- const jimp = configure({ plugins: [crop] }, Jimp);
- describe('Autocrop', () => {
- it('image with transparent surround color', async () => {
- const imgSrc = await jimp.read(
- mkJGD(
- ' ',
- ' ◆◆ ',
- ' ◆▦▦◆ ',
- ' ◆▦▦▦▦◆ ',
- ' ◆▦▦◆ ',
- ' ◆◆ ',
- ' '
- )
- );
- imgSrc
- .autocrop()
- .getJGDSync()
- .should.be.sameJGD(
- mkJGD(' ◆◆ ', ' ◆▦▦◆ ', '◆▦▦▦▦◆', ' ◆▦▦◆ ', ' ◆◆ ')
- );
- });
- it('image with opaque surround color', async () => {
- const imgSrc = await jimp.read(
- mkJGD(
- '▥▥▥▥▥▥▥▥▥▥',
- '▥▥▥▥◆◆▥▥▥▥',
- '▥▥▥◆▦▦◆▥▥▥',
- '▥▥◆▦▦▦▦◆▥▥',
- '▥▥▥◆▦▦◆▥▥▥',
- '▥▥▥▥◆◆▥▥▥▥',
- '▥▥▥▥▥▥▥▥▥▥'
- )
- );
- imgSrc
- .autocrop()
- .getJGDSync()
- .should.be.sameJGD(
- mkJGD('▥▥◆◆▥▥', '▥◆▦▦◆▥', '◆▦▦▦▦◆', '▥◆▦▦◆▥', '▥▥◆◆▥▥')
- );
- });
- it('image with one color border', async () => {
- const imgSrc = await jimp.read(
- mkJGD(
- '▥▥▥▥▥▥▥▥▥▥▥▥',
- '▥▥▥▥▥▥▥▥▥▥▥▥',
- '▥▥ ◆◆ ▥▥',
- '▥▥ ◆▦▦◆ ▥▥',
- '▥▥ ◆▦▦▦▦◆ ▥▥',
- '▥▥ ◆▦▦◆ ▥▥',
- '▥▥ ◆◆ ▥▥',
- '▥▥▥▥▥▥▥▥▥▥▥▥',
- '▥▥▥▥▥▥▥▥▥▥▥▥'
- )
- );
- imgSrc
- .autocrop()
- .getJGDSync()
- .should.be.sameJGD(
- mkJGD(' ◆◆ ', ' ◆▦▦◆ ', ' ◆▦▦▦▦◆ ', ' ◆▦▦◆ ', ' ◆◆ ')
- );
- });
- it('image border with small variation', async () => {
- const imgSrc = await jimp.read(
- mkJGD(
- '323232323232',
- '232323232323',
- '32 ◆◆ 32',
- '23 ◆▦▦◆ 23',
- '32 ◆▦▦▦▦◆ 32',
- '23 ◆▦▦◆ 23',
- '32 ◆◆ 32',
- '232323232323',
- '323232323232'
- )
- );
- imgSrc
- .clone()
- .autocrop()
- .getJGDSync()
- .should.be.sameJGD(
- mkJGD(
- '323232323232',
- '232323232323',
- '32 ◆◆ 32',
- '23 ◆▦▦◆ 23',
- '32 ◆▦▦▦▦◆ 32',
- '23 ◆▦▦◆ 23',
- '32 ◆◆ 32',
- '232323232323',
- '323232323232'
- )
- );
- imgSrc
- .clone()
- .autocrop(0.005)
- .getJGDSync()
- .should.be.sameJGD(
- mkJGD(' ◆◆ ', ' ◆▦▦◆ ', ' ◆▦▦▦▦◆ ', ' ◆▦▦◆ ', ' ◆◆ ')
- );
- });
- it('image border with small variation configured by options', async () => {
- const imgSrc = await Jimp.read(
- mkJGD(
- '323232323232',
- '232323232323',
- '32 ◆◆ 32',
- '23 ◆▦▦◆ 23',
- '32 ◆▦▦▦▦◆ 32',
- '23 ◆▦▦◆ 23',
- '32 ◆◆ 32',
- '232323232323',
- '323232323232'
- )
- );
- imgSrc
- .clone()
- .autocrop()
- .getJGDSync()
- .should.be.sameJGD(
- mkJGD(
- '323232323232',
- '232323232323',
- '32 ◆◆ 32',
- '23 ◆▦▦◆ 23',
- '32 ◆▦▦▦▦◆ 32',
- '23 ◆▦▦◆ 23',
- '32 ◆◆ 32',
- '232323232323',
- '323232323232'
- )
- );
- imgSrc
- .clone()
- .autocrop({ tolerance: 0.005 })
- .getJGDSync()
- .should.be.sameJGD(
- mkJGD(' ◆◆ ', ' ◆▦▦◆ ', ' ◆▦▦▦▦◆ ', ' ◆▦▦◆ ', ' ◆◆ ')
- );
- });
- it('image without frame', async () => {
- const imgSrc = await Jimp.read(
- mkJGD(
- '▥▥ ◆◆ ',
- '▥▥ ◆▦▦◆ ',
- '▥▥ ◆▦▦▦▦◆ ',
- '▥▥ ◆▦▦◆ ',
- '▥▥ ◆◆ ',
- '▥▥▥▥▥▥▥▥▥▥',
- '▥▥▥▥▥▥▥▥▥▥'
- )
- );
- imgSrc
- .autocrop(false)
- .getJGDSync()
- .should.be.sameJGD(
- mkJGD(' ◆◆ ', ' ◆▦▦◆ ', ' ◆▦▦▦▦◆ ', ' ◆▦▦◆ ', ' ◆◆ ')
- );
- });
- it('image without frame configured by options', async () => {
- const imgSrc = await Jimp.read(
- mkJGD(
- '▥▥ ◆◆ ',
- '▥▥ ◆▦▦◆ ',
- '▥▥ ◆▦▦▦▦◆ ',
- '▥▥ ◆▦▦◆ ',
- '▥▥ ◆◆ ',
- '▥▥▥▥▥▥▥▥▥▥',
- '▥▥▥▥▥▥▥▥▥▥'
- )
- );
- imgSrc
- .autocrop({ cropOnlyFrames: false })
- .getJGDSync()
- .should.be.sameJGD(
- mkJGD(' ◆◆ ', ' ◆▦▦◆ ', ' ◆▦▦▦▦◆ ', ' ◆▦▦◆ ', ' ◆◆ ')
- );
- });
- it('image with symmetric border configured by options', async () => {
- const imgSrc = await Jimp.read(
- mkJGD(
- '▥▥▥▥▥▥▥▥▥▥▥▥▥▥',
- '▥▥ ◆◆ ▥▥▥▥',
- '▥▥ ◆▦▦◆ ▥▥▥▥',
- '▥▥ ◆▦▦▦▦◆ ▥▥▥▥',
- '▥▥ ◆▦▦◆ ▥▥▥▥',
- '▥▥ ◆◆ ▥▥▥▥',
- '▥▥▥▥▥▥▥▥▥▥▥▥▥▥',
- '▥▥▥▥▥▥▥▥▥▥▥▥▥▥'
- )
- );
- imgSrc
- .autocrop({ cropSymmetric: true })
- .getJGDSync()
- .should.be.sameJGD(
- mkJGD(
- ' ◆◆ ▥▥',
- ' ◆▦▦◆ ▥▥',
- ' ◆▦▦▦▦◆ ▥▥',
- ' ◆▦▦◆ ▥▥',
- ' ◆◆ ▥▥',
- '▥▥▥▥▥▥▥▥▥▥'
- )
- );
- });
- it('image without frame and with symmetric border configured by options', async () => {
- const imgSrc = await Jimp.read(
- mkJGD(
- '▥▥ ◆◆ ▥▥▥▥',
- '▥▥ ◆▦▦◆ ▥▥▥▥',
- '▥▥ ◆▦▦▦▦◆ ▥▥▥▥',
- '▥▥ ◆▦▦◆ ▥▥▥▥',
- '▥▥ ◆◆ ▥▥▥▥',
- '▥▥▥▥▥▥▥▥▥▥▥▥▥▥',
- '▥▥▥▥▥▥▥▥▥▥▥▥▥▥'
- )
- );
- imgSrc
- .autocrop({ cropSymmetric: true, cropOnlyFrames: false })
- .getJGDSync()
- .should.be.sameJGD(
- mkJGD(
- ' ◆◆ ▥▥',
- ' ◆▦▦◆ ▥▥',
- ' ◆▦▦▦▦◆ ▥▥',
- ' ◆▦▦◆ ▥▥',
- ' ◆◆ ▥▥',
- '▥▥▥▥▥▥▥▥▥▥',
- '▥▥▥▥▥▥▥▥▥▥'
- )
- );
- });
- it('image without frame and with some border left', async () => {
- const imgSrc = await Jimp.read(
- mkJGD(
- '323232323232',
- '232323232323',
- '32 ◆◆ 32',
- '23 ◆▦▦◆ 23',
- '32 ◆▦▦▦▦◆ 32',
- '23 ◆▦▦◆ 23',
- '32 ◆◆ 32',
- '232323232323',
- '323232323232'
- )
- );
- imgSrc
- .autocrop({
- tolerance: 0.005,
- leaveBorder: 1
- })
- .getJGDSync()
- .should.be.sameJGD(
- mkJGD(
- '3232323232',
- '2 ◆◆ 3',
- '3 ◆▦▦◆ 2',
- '2 ◆▦▦▦▦◆ 3',
- '3 ◆▦▦◆ 2',
- '2 ◆◆ 3',
- '3232323232'
- )
- );
- });
- it('image not cropped given an out of bounds "leaveBorder" value ', async () => {
- const imgSrc = await Jimp.read(
- mkJGD(
- '323232323232',
- '232323232323',
- '32 ◆◆ 32',
- '23 ◆▦▦◆ 23',
- '32 ◆▦▦▦▦◆ 32',
- '23 ◆▦▦◆ 23',
- '32 ◆◆ 32',
- '232323232323',
- '323232323232'
- )
- );
- imgSrc
- .autocrop({
- tolerance: 0.005,
- leaveBorder: 100
- })
- .getJGDSync()
- .should.be.sameJGD(
- mkJGD(
- '323232323232',
- '232323232323',
- '32 ◆◆ 32',
- '23 ◆▦▦◆ 23',
- '32 ◆▦▦▦▦◆ 32',
- '23 ◆▦▦◆ 23',
- '32 ◆◆ 32',
- '232323232323',
- '323232323232'
- )
- );
- });
- it('image with top and bottom frame and leaveBorder', async () => {
- const imgSrc = await Jimp.read(
- mkJGD(
- '▥▥▥▥▥▥▥▥',
- '▥▥▥▥▥▥▥▥',
- '▥▥▥▥▥▥▥▥',
- ' ◆◆ ',
- ' ◆▦▦◆ ',
- ' ◆▦▦▦▦◆ ',
- ' ◆▦▦◆ ',
- ' ◆◆ ',
- '▥▥▥▥▥▥▥▥',
- '▥▥▥▥▥▥▥▥',
- '▥▥▥▥▥▥▥▥'
- )
- );
- imgSrc
- .autocrop({ cropSymmetric: true, cropOnlyFrames: false, leaveBorder: 2 })
- .getJGDSync()
- .should.be.sameJGD(
- mkJGD(
- '▥▥▥▥▥▥▥▥',
- '▥▥▥▥▥▥▥▥',
- ' ◆◆ ',
- ' ◆▦▦◆ ',
- ' ◆▦▦▦▦◆ ',
- ' ◆▦▦◆ ',
- ' ◆◆ ',
- '▥▥▥▥▥▥▥▥',
- '▥▥▥▥▥▥▥▥'
- )
- );
- });
- });
|