diff --git a/lib/output.js b/lib/output.js index 6458c05c..6d309105 100644 --- a/lib/output.js +++ b/lib/output.js @@ -188,7 +188,7 @@ function withMetadata (options) { * @throws {Error} unsupported format or options */ function toFormat (format, options) { - const actualFormat = formats.get(is.object(format) && is.string(format.id) ? format.id : format); + const actualFormat = formats.get((is.object(format) && is.string(format.id) ? format.id : format).toLowerCase()); if (!actualFormat) { throw is.invalidParameterError('format', `one of: ${[...formats.keys()].join(', ')}`, format); } diff --git a/test/unit/toFormat.js b/test/unit/toFormat.js new file mode 100644 index 00000000..bc253d03 --- /dev/null +++ b/test/unit/toFormat.js @@ -0,0 +1,26 @@ +'use strict'; + +const assert = require('assert'); +const sharp = require('../../'); +const fixtures = require('../fixtures'); + +describe('toFormat', () => { + it('accepts upper case characters as format parameter (string)', function (done) { + sharp(fixtures.inputJpg) + .toFormat('PNG') + .toBuffer(function (err, data, info) { + if (err) throw err; + assert.strictEqual('png', info.format); + done(); + }); + }); + it('accepts upper case characters as format parameter (object)', function (done) { + sharp(fixtures.inputJpg) + .toFormat({ id: 'PNG' }) + .toBuffer(function (err, data, info) { + if (err) throw err; + assert.strictEqual('png', info.format); + done(); + }); + }); +});