mirror of
https://github.com/lovell/sharp.git
synced 2025-12-19 07:15:08 +01:00
Add support for pages option for multi-page input #1566
This commit is contained in:
1
test/fixtures/index.js
vendored
1
test/fixtures/index.js
vendored
@@ -100,6 +100,7 @@ module.exports = {
|
||||
inputTiff8BitDepth: getPath('8bit_depth.tiff'),
|
||||
inputGif: getPath('Crash_test.gif'), // http://upload.wikimedia.org/wikipedia/commons/e/e3/Crash_test.gif
|
||||
inputGifGreyPlusAlpha: getPath('grey-plus-alpha.gif'), // http://i.imgur.com/gZ5jlmE.gif
|
||||
inputGifAnimated: getPath('rotating-squares.gif'), // CC0 https://loading.io/spinner/blocks/-rotating-squares-preloader-gif
|
||||
inputSvg: getPath('check.svg'), // http://dev.w3.org/SVG/tools/svgweb/samples/svg-files/check.svg
|
||||
inputSvgWithEmbeddedImages: getPath('struct-image-04-t.svg'), // https://dev.w3.org/SVG/profiles/1.2T/test/svg/struct-image-04-t.svg
|
||||
|
||||
|
||||
BIN
test/fixtures/rotating-squares.gif
vendored
Normal file
BIN
test/fixtures/rotating-squares.gif
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 41 KiB |
64
test/unit/gif.js
Normal file
64
test/unit/gif.js
Normal file
@@ -0,0 +1,64 @@
|
||||
'use strict';
|
||||
|
||||
const fs = require('fs');
|
||||
const assert = require('assert');
|
||||
|
||||
const sharp = require('../../');
|
||||
const fixtures = require('../fixtures');
|
||||
|
||||
describe('GIF input', () => {
|
||||
it('GIF Buffer to JPEG Buffer', () =>
|
||||
sharp(fs.readFileSync(fixtures.inputGif))
|
||||
.resize(8, 4)
|
||||
.jpeg()
|
||||
.toBuffer({ resolveWithObject: true })
|
||||
.then(({ data, info }) => {
|
||||
assert.strictEqual(true, data.length > 0);
|
||||
assert.strictEqual(data.length, info.size);
|
||||
assert.strictEqual('jpeg', info.format);
|
||||
assert.strictEqual(8, info.width);
|
||||
assert.strictEqual(4, info.height);
|
||||
})
|
||||
);
|
||||
|
||||
it('2 channel GIF file to PNG Buffer', () =>
|
||||
sharp(fixtures.inputGifGreyPlusAlpha)
|
||||
.resize(8, 4)
|
||||
.png()
|
||||
.toBuffer({ resolveWithObject: true })
|
||||
.then(({ data, info }) => {
|
||||
assert.strictEqual(true, data.length > 0);
|
||||
assert.strictEqual(data.length, info.size);
|
||||
assert.strictEqual('png', info.format);
|
||||
assert.strictEqual(8, info.width);
|
||||
assert.strictEqual(4, info.height);
|
||||
assert.strictEqual(4, info.channels);
|
||||
})
|
||||
);
|
||||
|
||||
it('Animated GIF first page to PNG', () =>
|
||||
sharp(fixtures.inputGifAnimated)
|
||||
.toBuffer({ resolveWithObject: true })
|
||||
.then(({ data, info }) => {
|
||||
assert.strictEqual(true, data.length > 0);
|
||||
assert.strictEqual(data.length, info.size);
|
||||
assert.strictEqual('png', info.format);
|
||||
assert.strictEqual(80, info.width);
|
||||
assert.strictEqual(80, info.height);
|
||||
assert.strictEqual(4, info.channels);
|
||||
})
|
||||
);
|
||||
|
||||
it('Animated GIF all pages to PNG "toilet roll"', () =>
|
||||
sharp(fixtures.inputGifAnimated, { pages: -1 })
|
||||
.toBuffer({ resolveWithObject: true })
|
||||
.then(({ data, info }) => {
|
||||
assert.strictEqual(true, data.length > 0);
|
||||
assert.strictEqual(data.length, info.size);
|
||||
assert.strictEqual('png', info.format);
|
||||
assert.strictEqual(80, info.width);
|
||||
assert.strictEqual(2400, info.height);
|
||||
assert.strictEqual(4, info.channels);
|
||||
})
|
||||
);
|
||||
});
|
||||
@@ -517,37 +517,6 @@ describe('Input/output', function () {
|
||||
});
|
||||
});
|
||||
|
||||
it('Load GIF from Buffer', function (done) {
|
||||
const inputGifBuffer = fs.readFileSync(fixtures.inputGif);
|
||||
sharp(inputGifBuffer)
|
||||
.resize(320, 240)
|
||||
.jpeg()
|
||||
.toBuffer(function (err, data, info) {
|
||||
if (err) throw err;
|
||||
assert.strictEqual(true, data.length > 0);
|
||||
assert.strictEqual(data.length, info.size);
|
||||
assert.strictEqual('jpeg', info.format);
|
||||
assert.strictEqual(320, info.width);
|
||||
assert.strictEqual(240, info.height);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('Load GIF grey+alpha from file, auto convert to PNG', function (done) {
|
||||
sharp(fixtures.inputGifGreyPlusAlpha)
|
||||
.resize(8, 4)
|
||||
.toBuffer(function (err, data, info) {
|
||||
if (err) throw err;
|
||||
assert.strictEqual(true, data.length > 0);
|
||||
assert.strictEqual(data.length, info.size);
|
||||
assert.strictEqual('png', info.format);
|
||||
assert.strictEqual(8, info.width);
|
||||
assert.strictEqual(4, info.height);
|
||||
assert.strictEqual(4, info.channels);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('Load Vips V file', function (done) {
|
||||
sharp(fixtures.inputV)
|
||||
.jpeg()
|
||||
|
||||
Reference in New Issue
Block a user