From 79f476ae4d10bbaf956d915e015be8873a9e8f17 Mon Sep 17 00:00:00 2001 From: stefanprobst Date: Wed, 2 Sep 2020 09:56:12 +0200 Subject: [PATCH] Allow input density range up to 100000 DPI (#2348) --- lib/input.js | 4 ++-- test/fixtures/circle.svg | 3 +++ test/fixtures/expected/circle.png | Bin 0 -> 22262 bytes test/fixtures/index.js | 1 + test/unit/io.js | 2 +- test/unit/svg.js | 25 +++++++++++++++++++++++++ 6 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 test/fixtures/circle.svg create mode 100644 test/fixtures/expected/circle.png diff --git a/lib/input.js b/lib/input.js index a3ca117e..dbb42406 100644 --- a/lib/input.js +++ b/lib/input.js @@ -57,10 +57,10 @@ function _createInputDescriptor (input, inputOptions, containerOptions) { } // Density if (is.defined(inputOptions.density)) { - if (is.inRange(inputOptions.density, 1, 2400)) { + if (is.inRange(inputOptions.density, 1, 100000)) { inputDescriptor.density = inputOptions.density; } else { - throw is.invalidParameterError('density', 'number between 1 and 2400', inputOptions.density); + throw is.invalidParameterError('density', 'number between 1 and 100000', inputOptions.density); } } // limitInputPixels diff --git a/test/fixtures/circle.svg b/test/fixtures/circle.svg new file mode 100644 index 00000000..7807e32f --- /dev/null +++ b/test/fixtures/circle.svg @@ -0,0 +1,3 @@ + + + diff --git a/test/fixtures/expected/circle.png b/test/fixtures/expected/circle.png new file mode 100644 index 0000000000000000000000000000000000000000..9b4575ac2718ea89af7f06f36e4e68d599192c80 GIT binary patch literal 22262 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/index.js b/test/fixtures/index.js index dab08814..28d0293e 100644 --- a/test/fixtures/index.js +++ b/test/fixtures/index.js @@ -107,6 +107,7 @@ module.exports = { inputGifAnimated: getPath('rotating-squares.gif'), // CC0 https://loading.io/spinner/blocks/-rotating-squares-preloader-gif inputGifAnimatedLoop3: getPath('animated-loop-3.gif'), // CC-BY-SA-4.0 Petrus3743 https://commons.wikimedia.org/wiki/File:01-Goldener_Schnitt_Formel-Animation.gif inputSvg: getPath('check.svg'), // http://dev.w3.org/SVG/tools/svgweb/samples/svg-files/check.svg + inputSvgSmallViewBox: getPath('circle.svg'), inputSvgWithEmbeddedImages: getPath('struct-image-04-t.svg'), // https://dev.w3.org/SVG/profiles/1.2T/test/svg/struct-image-04-t.svg inputJPGBig: getPath('flowers.jpeg'), diff --git a/test/unit/io.js b/test/unit/io.js index ad19964f..0e1a3f78 100644 --- a/test/unit/io.js +++ b/test/unit/io.js @@ -647,7 +647,7 @@ describe('Input/output', function () { it('Invalid density: string', function () { assert.throws(function () { sharp({ density: 'zoinks' }); - }, /Expected number between 1 and 2400 for density but received zoinks of type string/); + }, /Expected number between 1 and 100000 for density but received zoinks of type string/); }); it('Setting animated property updates pages property', function () { assert.strictEqual(sharp({ animated: false }).options.input.pages, 1); diff --git a/test/unit/svg.js b/test/unit/svg.js index afeff85f..300e5c2b 100644 --- a/test/unit/svg.js +++ b/test/unit/svg.js @@ -48,6 +48,31 @@ describe('SVG input', function () { }); }); + it('Convert SVG to PNG at DPI larger than 2400', function (done) { + const size = 1024; + sharp(fixtures.inputSvgSmallViewBox).metadata(function (err, metadata) { + if (err) throw err; + const density = (size / Math.max(metadata.width, metadata.height)) * metadata.density; + sharp(fixtures.inputSvgSmallViewBox, { density }) + .resize(size) + .toFormat('png') + .toBuffer(function (err, data, info) { + if (err) throw err; + assert.strictEqual('png', info.format); + assert.strictEqual(size, info.width); + assert.strictEqual(size, info.height); + fixtures.assertSimilar(fixtures.expected('circle.png'), data, function (err) { + if (err) throw err; + sharp(data).metadata(function (err, info) { + if (err) throw err; + assert.strictEqual(9216, info.density); + done(); + }); + }); + }); + }); + }); + it('Convert SVG to PNG at 14.4DPI', function (done) { sharp(fixtures.inputSvg, { density: 14.4 }) .toFormat('png')