321 lines
8.5 KiB
JavaScript
321 lines
8.5 KiB
JavaScript
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 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 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(
|
|
'▥▥▥▥▥▥▥▥',
|
|
'▥▥▥▥▥▥▥▥',
|
|
' ◆◆ ',
|
|
' ◆▦▦◆ ',
|
|
' ◆▦▦▦▦◆ ',
|
|
' ◆▦▦◆ ',
|
|
' ◆◆ ',
|
|
'▥▥▥▥▥▥▥▥',
|
|
'▥▥▥▥▥▥▥▥'
|
|
)
|
|
);
|
|
});
|
|
});
|