Path: blob/master/node_modules/@jimp/plugin-resize/test/resize.test.js
1126 views
import { Jimp, mkJGD, hashForEach } from '@jimp/test-utils';1import configure from '@jimp/custom';23import resize from '../src';45const jimp = configure({ plugins: [resize] }, Jimp);67describe('Resize images', () => {8const testImages = [9{10title: 'max contrast 8x8',11src: jimp.read(12mkJGD(13'■■■■□□□□',14'■■■■□□□□',15'■■■■□□□□',16'■■■■□□□□',17'□□□□■■■■',18'□□□□■■■■',19'□□□□■■■■',20'□□□□■■■■'21)22),23results: {24'default 4x4': mkJGD('■■□□', '■■□□', '□□■■', '□□■■'),25'NEAREST_NEIGHBOR 4x4': mkJGD('■■□□', '■■□□', '□□■■', '□□■■'),26'BILINEAR 4x4': mkJGD('■■□□', '■■□□', '□□■■', '□□■■'),27'BICUBIC 4x4': {28width: 4,29height: 4,30data: [310x000000ff,320x000000ff,330xbfbfbfff,340xffffffff,350x000000ff,360x000000ff,370xbfbfbfff,380xffffffff,390xbfbfbfff,400xbfbfbfff,410x5f5f5fff,420x404040ff,430xffffffff,440xffffffff,450x404040ff,460x000000ff47]48},49'HERMITE 4x4': {50width: 4,51height: 4,52data: [530x000000ff,540x000000ff,550xc0c0c0ff,560xffffffff,570x000000ff,580x000000ff,590xc0c0c0ff,600xffffffff,610xc0c0c0ff,620xc0c0c0ff,630x606060ff,640x404040ff,650xffffffff,660xffffffff,670x404040ff,680x000000ff69]70},71'BEZIER 4x4': {72width: 4,73height: 4,74data: [750x000000ff,760x000000ff,770xc0c0c0ff,780xffffffff,790x000000ff,800x000000ff,810xc0c0c0ff,820xffffffff,830xc0c0c0ff,840xc0c0c0ff,850x606060ff,860x404040ff,870xffffffff,880xffffffff,890x404040ff,900x000000ff91]92},93'default 5x2': mkJGD('■■▦□□', '□□▦■■'),94'NEAREST_NEIGHBOR 5x2': mkJGD('■■■□□', '□□□■■'),95'BILINEAR 5x2': mkJGD('■■3□□', '□□C■■'),96'BICUBIC 5x2': {97width: 5,98height: 2,99data: [1000x000000ff,1010x000000ff,1020x000000ff,1030xffffffff,1040xffffffff,1050xdfdfdfff,1060xdfdfdfff,1070xdfdfdfff,1080x202020ff,1090x202020ff110]111},112'HERMITE 5x2': {113width: 5,114height: 2,115data: [1160x000000ff,1170x000000ff,1180x000000ff,1190xffffffff,1200xffffffff,1210xdfdfdfff,1220xdfdfdfff,1230xdfdfdfff,1240x202020ff,1250x202020ff126]127},128'BEZIER 5x2': {129width: 5,130height: 2,131data: [1320x000000ff,1330x000000ff,1340x000000ff,1350xffffffff,1360xffffffff,1370xdfdfdfff,1380xdfdfdfff,1390xdfdfdfff,1400x202020ff,1410x202020ff142]143}144}145},146/**********************************************************************/147{148title: 'max contrast 12x12 with dots',149src: jimp.read(150mkJGD(151'■■■■■■□□□□□□',152'■■■■■■□□□□□□',153'■■■□■■□□■□□□',154'■■■■■■□□□□□□',155'■■■■■■□□□□□□',156'■■■■■■□□□□□□',157'□□□□□□■■■■■■',158'□□□□□□■■■■■■',159'□□□□□□■■■■■■',160'□□□■□□■■□■■■',161'□□□□□□■■■■■■',162'□□□□□□■■■■■■'163)164),165results: {166'default 6x6': mkJGD(167'■■■□□□',168'■▩■□▥□',169'■■■□□□',170'□□□■■■',171'□▥□■▩■',172'□□□■■■'173),174'NEAREST_NEIGHBOR 6x6': mkJGD(175'■■■□□□',176'■■■□■□',177'■■■□□□',178'□□□■■■',179'□□□■■■',180'□□□■■■'181),182'BILINEAR 6x6': mkJGD(183'■■■□□□',184'■■■□■□',185'■■■□□□',186'□□□■■■',187'□□□■■■',188'□□□■■■'189),190'BICUBIC 6x6': {191width: 6,192height: 6,193data: [1940x000000ff,1950x000000ff,1960x000000ff,1970xbfbfbfff,1980xffffffff,1990xffffffff,2000x000000ff,2010x474747ff,2020x202020ff,2030xbfbfbfff,2040x979797ff,2050xffffffff,2060x000000ff,2070x000000ff,2080x000000ff,2090xbfbfbfff,2100xffffffff,2110xffffffff,2120xbfbfbfff,2130xbfbfbfff,2140xbfbfbfff,2150x5f5f5fff,2160x404040ff,2170x404040ff,2180xffffffff,2190xeeeeeeff,2200xf7f7f7ff,2210x404040ff,2220x181818ff,2230x000000ff,2240xffffffff,2250xc9c9c9ff,2260xe6e6e6ff,2270x404040ff,2280x4e4e4eff,2290x000000ff230]231},232'HERMITE 6x6': {233width: 6,234height: 6,235data: [2360x000000ff,2370x000000ff,2380x000000ff,2390xc0c0c0ff,2400xffffffff,2410xffffffff,2420x000000ff,2430x404040ff,2440x191919ff,2450xc0c0c0ff,2460xa6a6a6ff,2470xffffffff,2480x000000ff,2490x000000ff,2500x000000ff,2510xc0c0c0ff,2520xffffffff,2530xffffffff,2540xc0c0c0ff,2550xc0c0c0ff,2560xc0c0c0ff,2570x606060ff,2580x404040ff,2590x404040ff,2600xffffffff,2610xf3f3f3ff,2620xfafafaff,2630x404040ff,2640x111111ff,2650x000000ff,2660xffffffff,2670xcbcbcbff,2680xebebebff,2690x404040ff,2700x484848ff,2710x000000ff272]273},274'BEZIER 6x6': {275width: 6,276height: 6,277data: [2780x000000ff,2790x000000ff,2800x000000ff,2810xc0c0c0ff,2820xffffffff,2830xffffffff,2840x000000ff,2850x444444ff,2860x1d1d1dff,2870xc0c0c0ff,2880x9f9f9fff,2890xffffffff,2900x000000ff,2910x000000ff,2920x000000ff,2930xc0c0c0ff,2940xffffffff,2950xffffffff,2960xc0c0c0ff,2970xc0c0c0ff,2980xc0c0c0ff,2990x606060ff,3000x404040ff,3010x404040ff,3020xffffffff,3030xf0f0f0ff,3040xf9f9f9ff,3050x404040ff,3060x151515ff,3070x000000ff,3080xffffffff,3090xcacacaff,3100xe9e9e9ff,3110x404040ff,3120x4b4b4bff,3130x000000ff314]315}316}317},318/**********************************************************************/319{320title: 'mutch contrast 4x4',321src: jimp.read(mkJGD('▩▩▥▥', '▩▩▥▥', '▥▥▩▩', '▥▥▩▩')),322results: {323'default 6x6': {324width: 6,325height: 6,326data: [3270x404040ff,3280x404040ff,3290x404040ff,3300x959595ff,3310xbfbfbfff,3320xbfbfbfff,3330x404040ff,3340x404040ff,3350x404040ff,3360x959595ff,3370xbfbfbfff,3380xbfbfbfff,3390x404040ff,3400x404040ff,3410x404040ff,3420x959595ff,3430xbfbfbfff,3440xbfbfbfff,3450x959595ff,3460x959595ff,3470x959595ff,3480x787878ff,3490x6a6a6aff,3500x6a6a6aff,3510xbfbfbfff,3520xbfbfbfff,3530xbfbfbfff,3540x6a6a6aff,3550x404040ff,3560x404040ff,3570xbfbfbfff,3580xbfbfbfff,3590xbfbfbfff,3600x6a6a6aff,3610x404040ff,3620x404040ff363]364},365'NEAREST_NEIGHBOR 6x6': {366width: 6,367height: 6,368data: [3690x404040ff,3700x404040ff,3710x404040ff,3720xbfbfbfff,3730xbfbfbfff,3740xbfbfbfff,3750x404040ff,3760x404040ff,3770x404040ff,3780xbfbfbfff,3790xbfbfbfff,3800xbfbfbfff,3810x404040ff,3820x404040ff,3830x404040ff,3840xbfbfbfff,3850xbfbfbfff,3860xbfbfbfff,3870xbfbfbfff,3880xbfbfbfff,3890xbfbfbfff,3900x404040ff,3910x404040ff,3920x404040ff,3930xbfbfbfff,3940xbfbfbfff,3950xbfbfbfff,3960x404040ff,3970x404040ff,3980x404040ff,3990xbfbfbfff,4000xbfbfbfff,4010xbfbfbfff,4020x404040ff,4030x404040ff,4040x404040ff405]406},407'BILINEAR 6x6': {408width: 6,409height: 6,410data: [4110x404040ff,4120x404040ff,4130x6a6a6aff,4140xbfbfbfff,4150xbfbfbfff,4160xbfbfbfff,4170x404040ff,4180x404040ff,4190x6a6a6aff,4200xbfbfbfff,4210xbfbfbfff,4220xbfbfbfff,4230x6a6a6aff,4240x6a6a6aff,4250x787878ff,4260x959595ff,4270x959595ff,4280x959595ff,4290xbfbfbfff,4300xbfbfbfff,4310x959595ff,4320x404040ff,4330x404040ff,4340x404040ff,4350xbfbfbfff,4360xbfbfbfff,4370x959595ff,4380x404040ff,4390x404040ff,4400x404040ff,4410xbfbfbfff,4420xbfbfbfff,4430x959595ff,4440x404040ff,4450x404040ff,4460x404040ff447]448},449'BICUBIC 6x6': {450width: 6,451height: 6,452data: [4530x404040ff,4540x303030ff,4550x404040ff,4560x7f7f7fff,4570xbfbfbfff,4580xcececeff,4590x303030ff,4600x1c1c1cff,4610x303030ff,4620x7f7f7fff,4630xcececeff,4640xe1e1e1ff,4650x404040ff,4660x303030ff,4670x404040ff,4680x7f7f7fff,4690xbfbfbfff,4700xcececeff,4710x7f7f7fff,4720x7f7f7fff,4730x7f7f7fff,4740x7f7f7fff,4750x7f7f7fff,4760x7f7f7fff,4770xbfbfbfff,4780xcececeff,4790xbfbfbfff,4800x7f7f7fff,4810x404040ff,4820x303030ff,4830xcececeff,4840xe1e1e1ff,4850xcececeff,4860x7f7f7fff,4870x303030ff,4880x1c1c1cff489]490},491'HERMITE 6x6': {492width: 6,493height: 6,494data: [4950x404040ff,4960x383838ff,4970x404040ff,4980x808080ff,4990xbfbfbfff,5000xc7c7c7ff,5010x383838ff,5020x2f2f2fff,5030x383838ff,5040x808080ff,5050xc7c7c7ff,5060xd0d0d0ff,5070x404040ff,5080x383838ff,5090x404040ff,5100x808080ff,5110xbfbfbfff,5120xc7c7c7ff,5130x808080ff,5140x808080ff,5150x808080ff,5160x808080ff,5170x808080ff,5180x808080ff,5190xbfbfbfff,5200xc7c7c7ff,5210xbfbfbfff,5220x808080ff,5230x404040ff,5240x383838ff,5250xc7c7c7ff,5260xd0d0d0ff,5270xc7c7c7ff,5280x808080ff,5290x383838ff,5300x2f2f2fff531]532},533'BEZIER 6x6': {534width: 6,535height: 6,536data: [5370x404040ff,5380x343434ff,5390x404040ff,5400x808080ff,5410xbfbfbfff,5420xcbcbcbff,5430x343434ff,5440x262626ff,5450x343434ff,5460x808080ff,5470xcbcbcbff,5480xd9d9d9ff,5490x404040ff,5500x343434ff,5510x404040ff,5520x808080ff,5530xbfbfbfff,5540xcbcbcbff,5550x808080ff,5560x808080ff,5570x808080ff,5580x808080ff,5590x808080ff,5600x808080ff,5610xbfbfbfff,5620xcbcbcbff,5630xbfbfbfff,5640x808080ff,5650x404040ff,5660x343434ff,5670xcbcbcbff,5680xd9d9d9ff,5690xcbcbcbff,5700x808080ff,5710x343434ff,5720x262626ff573]574}575}576}577];578579before(done => {580const srcImgs = testImages.map(test => test.src);581Promise.all(srcImgs)582.then(imgsJimp => {583for (let i = 0; i < imgsJimp.length; i++) {584testImages[i].src = imgsJimp[i];585}586587done();588})589.catch(done);590});591592function testEach(test) {593describe(test.title, () => {594hashForEach(test.results, (expectedTitle, expectedJgd) => {595const mode = Jimp['RESIZE_' + expectedTitle.split(' ')[0]];596const size = expectedTitle597.split(' ')[1]598.split('x')599.map(n => parseInt(n, 10));600it('to ' + expectedTitle, () => {601test.src602.clone()603.resize(size[0], size[1], mode)604.getJGDSync()605.should.be.sameJGD(expectedJgd);606});607});608});609}610611testImages.forEach(testEach);612});613614615