Prevent mutatation of jpeg options #1516

This commit is contained in:
Lovell Fuller 2018-12-21 19:54:33 +00:00
parent 8c6da5548a
commit a54fe9f77c
2 changed files with 20 additions and 15 deletions

View File

@ -4,6 +4,11 @@
Requires libvips v8.7.0. Requires libvips v8.7.0.
#### v0.21.2 - TBD
* Prevent mutatation of options passed to `jpeg`.
[#1516](https://github.com/lovell/sharp/issues/1516)
#### v0.21.1 - 7<sup>th</sup> December 2018 #### v0.21.1 - 7<sup>th</sup> December 2018
* Install: support `sharp_dist_base_url` npm config, like existing `SHARP_DIST_BASE_URL`. * Install: support `sharp_dist_base_url` npm config, like existing `SHARP_DIST_BASE_URL`.

View File

@ -175,30 +175,30 @@ function jpeg (options) {
throw new Error('Invalid chromaSubsampling (4:2:0, 4:4:4) ' + options.chromaSubsampling); throw new Error('Invalid chromaSubsampling (4:2:0, 4:4:4) ' + options.chromaSubsampling);
} }
} }
options.trellisQuantisation = is.bool(options.trellisQuantization) ? options.trellisQuantization : options.trellisQuantisation; const trellisQuantisation = is.bool(options.trellisQuantization) ? options.trellisQuantization : options.trellisQuantisation;
if (is.defined(options.trellisQuantisation)) { if (is.defined(trellisQuantisation)) {
this._setBooleanOption('jpegTrellisQuantisation', options.trellisQuantisation); this._setBooleanOption('jpegTrellisQuantisation', trellisQuantisation);
} }
if (is.defined(options.overshootDeringing)) { if (is.defined(options.overshootDeringing)) {
this._setBooleanOption('jpegOvershootDeringing', options.overshootDeringing); this._setBooleanOption('jpegOvershootDeringing', options.overshootDeringing);
} }
options.optimiseScans = is.bool(options.optimizeScans) ? options.optimizeScans : options.optimiseScans; const optimiseScans = is.bool(options.optimizeScans) ? options.optimizeScans : options.optimiseScans;
if (is.defined(options.optimiseScans)) { if (is.defined(optimiseScans)) {
this._setBooleanOption('jpegOptimiseScans', options.optimiseScans); this._setBooleanOption('jpegOptimiseScans', optimiseScans);
if (options.optimiseScans) { if (optimiseScans) {
this.options.jpegProgressive = true; this.options.jpegProgressive = true;
} }
} }
options.optimiseCoding = is.bool(options.optimizeCoding) ? options.optimizeCoding : options.optimiseCoding; const optimiseCoding = is.bool(options.optimizeCoding) ? options.optimizeCoding : options.optimiseCoding;
if (is.defined(options.optimiseCoding)) { if (is.defined(optimiseCoding)) {
this._setBooleanOption('jpegOptimiseCoding', options.optimiseCoding); this._setBooleanOption('jpegOptimiseCoding', optimiseCoding);
} }
options.quantisationTable = is.number(options.quantizationTable) ? options.quantizationTable : options.quantisationTable; const quantisationTable = is.number(options.quantizationTable) ? options.quantizationTable : options.quantisationTable;
if (is.defined(options.quantisationTable)) { if (is.defined(quantisationTable)) {
if (is.integer(options.quantisationTable) && is.inRange(options.quantisationTable, 0, 8)) { if (is.integer(quantisationTable) && is.inRange(quantisationTable, 0, 8)) {
this.options.jpegQuantisationTable = options.quantisationTable; this.options.jpegQuantisationTable = quantisationTable;
} else { } else {
throw new Error('Invalid quantisation table (integer, 0-8) ' + options.quantisationTable); throw new Error('Invalid quantisation table (integer, 0-8) ' + quantisationTable);
} }
} }
} }