Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
MR414N-ID
GitHub Repository: MR414N-ID/botku2
Path: blob/master/node_modules/@jimp/plugin-resize/test/resize.test.js
1126 views
1
import { Jimp, mkJGD, hashForEach } from '@jimp/test-utils';
2
import configure from '@jimp/custom';
3
4
import resize from '../src';
5
6
const jimp = configure({ plugins: [resize] }, Jimp);
7
8
describe('Resize images', () => {
9
const testImages = [
10
{
11
title: 'max contrast 8x8',
12
src: jimp.read(
13
mkJGD(
14
'■■■■□□□□',
15
'■■■■□□□□',
16
'■■■■□□□□',
17
'■■■■□□□□',
18
'□□□□■■■■',
19
'□□□□■■■■',
20
'□□□□■■■■',
21
'□□□□■■■■'
22
)
23
),
24
results: {
25
'default 4x4': mkJGD('■■□□', '■■□□', '□□■■', '□□■■'),
26
'NEAREST_NEIGHBOR 4x4': mkJGD('■■□□', '■■□□', '□□■■', '□□■■'),
27
'BILINEAR 4x4': mkJGD('■■□□', '■■□□', '□□■■', '□□■■'),
28
'BICUBIC 4x4': {
29
width: 4,
30
height: 4,
31
data: [
32
0x000000ff,
33
0x000000ff,
34
0xbfbfbfff,
35
0xffffffff,
36
0x000000ff,
37
0x000000ff,
38
0xbfbfbfff,
39
0xffffffff,
40
0xbfbfbfff,
41
0xbfbfbfff,
42
0x5f5f5fff,
43
0x404040ff,
44
0xffffffff,
45
0xffffffff,
46
0x404040ff,
47
0x000000ff
48
]
49
},
50
'HERMITE 4x4': {
51
width: 4,
52
height: 4,
53
data: [
54
0x000000ff,
55
0x000000ff,
56
0xc0c0c0ff,
57
0xffffffff,
58
0x000000ff,
59
0x000000ff,
60
0xc0c0c0ff,
61
0xffffffff,
62
0xc0c0c0ff,
63
0xc0c0c0ff,
64
0x606060ff,
65
0x404040ff,
66
0xffffffff,
67
0xffffffff,
68
0x404040ff,
69
0x000000ff
70
]
71
},
72
'BEZIER 4x4': {
73
width: 4,
74
height: 4,
75
data: [
76
0x000000ff,
77
0x000000ff,
78
0xc0c0c0ff,
79
0xffffffff,
80
0x000000ff,
81
0x000000ff,
82
0xc0c0c0ff,
83
0xffffffff,
84
0xc0c0c0ff,
85
0xc0c0c0ff,
86
0x606060ff,
87
0x404040ff,
88
0xffffffff,
89
0xffffffff,
90
0x404040ff,
91
0x000000ff
92
]
93
},
94
'default 5x2': mkJGD('■■▦□□', '□□▦■■'),
95
'NEAREST_NEIGHBOR 5x2': mkJGD('■■■□□', '□□□■■'),
96
'BILINEAR 5x2': mkJGD('■■3□□', '□□C■■'),
97
'BICUBIC 5x2': {
98
width: 5,
99
height: 2,
100
data: [
101
0x000000ff,
102
0x000000ff,
103
0x000000ff,
104
0xffffffff,
105
0xffffffff,
106
0xdfdfdfff,
107
0xdfdfdfff,
108
0xdfdfdfff,
109
0x202020ff,
110
0x202020ff
111
]
112
},
113
'HERMITE 5x2': {
114
width: 5,
115
height: 2,
116
data: [
117
0x000000ff,
118
0x000000ff,
119
0x000000ff,
120
0xffffffff,
121
0xffffffff,
122
0xdfdfdfff,
123
0xdfdfdfff,
124
0xdfdfdfff,
125
0x202020ff,
126
0x202020ff
127
]
128
},
129
'BEZIER 5x2': {
130
width: 5,
131
height: 2,
132
data: [
133
0x000000ff,
134
0x000000ff,
135
0x000000ff,
136
0xffffffff,
137
0xffffffff,
138
0xdfdfdfff,
139
0xdfdfdfff,
140
0xdfdfdfff,
141
0x202020ff,
142
0x202020ff
143
]
144
}
145
}
146
},
147
/**********************************************************************/
148
{
149
title: 'max contrast 12x12 with dots',
150
src: jimp.read(
151
mkJGD(
152
'■■■■■■□□□□□□',
153
'■■■■■■□□□□□□',
154
'■■■□■■□□■□□□',
155
'■■■■■■□□□□□□',
156
'■■■■■■□□□□□□',
157
'■■■■■■□□□□□□',
158
'□□□□□□■■■■■■',
159
'□□□□□□■■■■■■',
160
'□□□□□□■■■■■■',
161
'□□□■□□■■□■■■',
162
'□□□□□□■■■■■■',
163
'□□□□□□■■■■■■'
164
)
165
),
166
results: {
167
'default 6x6': mkJGD(
168
'■■■□□□',
169
'■▩■□▥□',
170
'■■■□□□',
171
'□□□■■■',
172
'□▥□■▩■',
173
'□□□■■■'
174
),
175
'NEAREST_NEIGHBOR 6x6': mkJGD(
176
'■■■□□□',
177
'■■■□■□',
178
'■■■□□□',
179
'□□□■■■',
180
'□□□■■■',
181
'□□□■■■'
182
),
183
'BILINEAR 6x6': mkJGD(
184
'■■■□□□',
185
'■■■□■□',
186
'■■■□□□',
187
'□□□■■■',
188
'□□□■■■',
189
'□□□■■■'
190
),
191
'BICUBIC 6x6': {
192
width: 6,
193
height: 6,
194
data: [
195
0x000000ff,
196
0x000000ff,
197
0x000000ff,
198
0xbfbfbfff,
199
0xffffffff,
200
0xffffffff,
201
0x000000ff,
202
0x474747ff,
203
0x202020ff,
204
0xbfbfbfff,
205
0x979797ff,
206
0xffffffff,
207
0x000000ff,
208
0x000000ff,
209
0x000000ff,
210
0xbfbfbfff,
211
0xffffffff,
212
0xffffffff,
213
0xbfbfbfff,
214
0xbfbfbfff,
215
0xbfbfbfff,
216
0x5f5f5fff,
217
0x404040ff,
218
0x404040ff,
219
0xffffffff,
220
0xeeeeeeff,
221
0xf7f7f7ff,
222
0x404040ff,
223
0x181818ff,
224
0x000000ff,
225
0xffffffff,
226
0xc9c9c9ff,
227
0xe6e6e6ff,
228
0x404040ff,
229
0x4e4e4eff,
230
0x000000ff
231
]
232
},
233
'HERMITE 6x6': {
234
width: 6,
235
height: 6,
236
data: [
237
0x000000ff,
238
0x000000ff,
239
0x000000ff,
240
0xc0c0c0ff,
241
0xffffffff,
242
0xffffffff,
243
0x000000ff,
244
0x404040ff,
245
0x191919ff,
246
0xc0c0c0ff,
247
0xa6a6a6ff,
248
0xffffffff,
249
0x000000ff,
250
0x000000ff,
251
0x000000ff,
252
0xc0c0c0ff,
253
0xffffffff,
254
0xffffffff,
255
0xc0c0c0ff,
256
0xc0c0c0ff,
257
0xc0c0c0ff,
258
0x606060ff,
259
0x404040ff,
260
0x404040ff,
261
0xffffffff,
262
0xf3f3f3ff,
263
0xfafafaff,
264
0x404040ff,
265
0x111111ff,
266
0x000000ff,
267
0xffffffff,
268
0xcbcbcbff,
269
0xebebebff,
270
0x404040ff,
271
0x484848ff,
272
0x000000ff
273
]
274
},
275
'BEZIER 6x6': {
276
width: 6,
277
height: 6,
278
data: [
279
0x000000ff,
280
0x000000ff,
281
0x000000ff,
282
0xc0c0c0ff,
283
0xffffffff,
284
0xffffffff,
285
0x000000ff,
286
0x444444ff,
287
0x1d1d1dff,
288
0xc0c0c0ff,
289
0x9f9f9fff,
290
0xffffffff,
291
0x000000ff,
292
0x000000ff,
293
0x000000ff,
294
0xc0c0c0ff,
295
0xffffffff,
296
0xffffffff,
297
0xc0c0c0ff,
298
0xc0c0c0ff,
299
0xc0c0c0ff,
300
0x606060ff,
301
0x404040ff,
302
0x404040ff,
303
0xffffffff,
304
0xf0f0f0ff,
305
0xf9f9f9ff,
306
0x404040ff,
307
0x151515ff,
308
0x000000ff,
309
0xffffffff,
310
0xcacacaff,
311
0xe9e9e9ff,
312
0x404040ff,
313
0x4b4b4bff,
314
0x000000ff
315
]
316
}
317
}
318
},
319
/**********************************************************************/
320
{
321
title: 'mutch contrast 4x4',
322
src: jimp.read(mkJGD('▩▩▥▥', '▩▩▥▥', '▥▥▩▩', '▥▥▩▩')),
323
results: {
324
'default 6x6': {
325
width: 6,
326
height: 6,
327
data: [
328
0x404040ff,
329
0x404040ff,
330
0x404040ff,
331
0x959595ff,
332
0xbfbfbfff,
333
0xbfbfbfff,
334
0x404040ff,
335
0x404040ff,
336
0x404040ff,
337
0x959595ff,
338
0xbfbfbfff,
339
0xbfbfbfff,
340
0x404040ff,
341
0x404040ff,
342
0x404040ff,
343
0x959595ff,
344
0xbfbfbfff,
345
0xbfbfbfff,
346
0x959595ff,
347
0x959595ff,
348
0x959595ff,
349
0x787878ff,
350
0x6a6a6aff,
351
0x6a6a6aff,
352
0xbfbfbfff,
353
0xbfbfbfff,
354
0xbfbfbfff,
355
0x6a6a6aff,
356
0x404040ff,
357
0x404040ff,
358
0xbfbfbfff,
359
0xbfbfbfff,
360
0xbfbfbfff,
361
0x6a6a6aff,
362
0x404040ff,
363
0x404040ff
364
]
365
},
366
'NEAREST_NEIGHBOR 6x6': {
367
width: 6,
368
height: 6,
369
data: [
370
0x404040ff,
371
0x404040ff,
372
0x404040ff,
373
0xbfbfbfff,
374
0xbfbfbfff,
375
0xbfbfbfff,
376
0x404040ff,
377
0x404040ff,
378
0x404040ff,
379
0xbfbfbfff,
380
0xbfbfbfff,
381
0xbfbfbfff,
382
0x404040ff,
383
0x404040ff,
384
0x404040ff,
385
0xbfbfbfff,
386
0xbfbfbfff,
387
0xbfbfbfff,
388
0xbfbfbfff,
389
0xbfbfbfff,
390
0xbfbfbfff,
391
0x404040ff,
392
0x404040ff,
393
0x404040ff,
394
0xbfbfbfff,
395
0xbfbfbfff,
396
0xbfbfbfff,
397
0x404040ff,
398
0x404040ff,
399
0x404040ff,
400
0xbfbfbfff,
401
0xbfbfbfff,
402
0xbfbfbfff,
403
0x404040ff,
404
0x404040ff,
405
0x404040ff
406
]
407
},
408
'BILINEAR 6x6': {
409
width: 6,
410
height: 6,
411
data: [
412
0x404040ff,
413
0x404040ff,
414
0x6a6a6aff,
415
0xbfbfbfff,
416
0xbfbfbfff,
417
0xbfbfbfff,
418
0x404040ff,
419
0x404040ff,
420
0x6a6a6aff,
421
0xbfbfbfff,
422
0xbfbfbfff,
423
0xbfbfbfff,
424
0x6a6a6aff,
425
0x6a6a6aff,
426
0x787878ff,
427
0x959595ff,
428
0x959595ff,
429
0x959595ff,
430
0xbfbfbfff,
431
0xbfbfbfff,
432
0x959595ff,
433
0x404040ff,
434
0x404040ff,
435
0x404040ff,
436
0xbfbfbfff,
437
0xbfbfbfff,
438
0x959595ff,
439
0x404040ff,
440
0x404040ff,
441
0x404040ff,
442
0xbfbfbfff,
443
0xbfbfbfff,
444
0x959595ff,
445
0x404040ff,
446
0x404040ff,
447
0x404040ff
448
]
449
},
450
'BICUBIC 6x6': {
451
width: 6,
452
height: 6,
453
data: [
454
0x404040ff,
455
0x303030ff,
456
0x404040ff,
457
0x7f7f7fff,
458
0xbfbfbfff,
459
0xcececeff,
460
0x303030ff,
461
0x1c1c1cff,
462
0x303030ff,
463
0x7f7f7fff,
464
0xcececeff,
465
0xe1e1e1ff,
466
0x404040ff,
467
0x303030ff,
468
0x404040ff,
469
0x7f7f7fff,
470
0xbfbfbfff,
471
0xcececeff,
472
0x7f7f7fff,
473
0x7f7f7fff,
474
0x7f7f7fff,
475
0x7f7f7fff,
476
0x7f7f7fff,
477
0x7f7f7fff,
478
0xbfbfbfff,
479
0xcececeff,
480
0xbfbfbfff,
481
0x7f7f7fff,
482
0x404040ff,
483
0x303030ff,
484
0xcececeff,
485
0xe1e1e1ff,
486
0xcececeff,
487
0x7f7f7fff,
488
0x303030ff,
489
0x1c1c1cff
490
]
491
},
492
'HERMITE 6x6': {
493
width: 6,
494
height: 6,
495
data: [
496
0x404040ff,
497
0x383838ff,
498
0x404040ff,
499
0x808080ff,
500
0xbfbfbfff,
501
0xc7c7c7ff,
502
0x383838ff,
503
0x2f2f2fff,
504
0x383838ff,
505
0x808080ff,
506
0xc7c7c7ff,
507
0xd0d0d0ff,
508
0x404040ff,
509
0x383838ff,
510
0x404040ff,
511
0x808080ff,
512
0xbfbfbfff,
513
0xc7c7c7ff,
514
0x808080ff,
515
0x808080ff,
516
0x808080ff,
517
0x808080ff,
518
0x808080ff,
519
0x808080ff,
520
0xbfbfbfff,
521
0xc7c7c7ff,
522
0xbfbfbfff,
523
0x808080ff,
524
0x404040ff,
525
0x383838ff,
526
0xc7c7c7ff,
527
0xd0d0d0ff,
528
0xc7c7c7ff,
529
0x808080ff,
530
0x383838ff,
531
0x2f2f2fff
532
]
533
},
534
'BEZIER 6x6': {
535
width: 6,
536
height: 6,
537
data: [
538
0x404040ff,
539
0x343434ff,
540
0x404040ff,
541
0x808080ff,
542
0xbfbfbfff,
543
0xcbcbcbff,
544
0x343434ff,
545
0x262626ff,
546
0x343434ff,
547
0x808080ff,
548
0xcbcbcbff,
549
0xd9d9d9ff,
550
0x404040ff,
551
0x343434ff,
552
0x404040ff,
553
0x808080ff,
554
0xbfbfbfff,
555
0xcbcbcbff,
556
0x808080ff,
557
0x808080ff,
558
0x808080ff,
559
0x808080ff,
560
0x808080ff,
561
0x808080ff,
562
0xbfbfbfff,
563
0xcbcbcbff,
564
0xbfbfbfff,
565
0x808080ff,
566
0x404040ff,
567
0x343434ff,
568
0xcbcbcbff,
569
0xd9d9d9ff,
570
0xcbcbcbff,
571
0x808080ff,
572
0x343434ff,
573
0x262626ff
574
]
575
}
576
}
577
}
578
];
579
580
before(done => {
581
const srcImgs = testImages.map(test => test.src);
582
Promise.all(srcImgs)
583
.then(imgsJimp => {
584
for (let i = 0; i < imgsJimp.length; i++) {
585
testImages[i].src = imgsJimp[i];
586
}
587
588
done();
589
})
590
.catch(done);
591
});
592
593
function testEach(test) {
594
describe(test.title, () => {
595
hashForEach(test.results, (expectedTitle, expectedJgd) => {
596
const mode = Jimp['RESIZE_' + expectedTitle.split(' ')[0]];
597
const size = expectedTitle
598
.split(' ')[1]
599
.split('x')
600
.map(n => parseInt(n, 10));
601
it('to ' + expectedTitle, () => {
602
test.src
603
.clone()
604
.resize(size[0], size[1], mode)
605
.getJGDSync()
606
.should.be.sameJGD(expectedJgd);
607
});
608
});
609
});
610
}
611
612
testImages.forEach(testEach);
613
});
614
615