Ensure correct ordering of rotate-then-trim ops #2087

This commit is contained in:
Lovell Fuller
2020-02-23 16:59:22 +00:00
parent 409e5174bb
commit e9b21f2211
3 changed files with 40 additions and 1 deletions

View File

@@ -85,6 +85,13 @@ const mapFitToCanvas = {
outside: 'min'
};
/**
* @private
*/
function isRotationExpected (options) {
return (options.angle % 360) !== 0 || options.useExifOrientation === true || options.rotationAngle !== 0;
}
/**
* Resize image to `width`, `height` or `width x height`.
*
@@ -367,7 +374,7 @@ function extract (options) {
}
}, this);
// Ensure existing rotation occurs before pre-resize extraction
if (suffix === 'Pre' && ((this.options.angle % 360) !== 0 || this.options.useExifOrientation === true || this.options.rotationAngle !== 0)) {
if (suffix === 'Pre' && isRotationExpected(this.options)) {
this.options.rotateBeforePreExtract = true;
}
return this;
@@ -391,6 +398,9 @@ function trim (threshold) {
} else {
throw is.invalidParameterError('threshold', 'number greater than zero', threshold);
}
if (this.options.trimThreshold && isRotationExpected(this.options)) {
this.options.rotateBeforePreExtract = true;
}
return this;
}