Clarify extract-resize-extract operation ordering

This commit is contained in:
Lovell Fuller 2023-10-03 19:28:18 +01:00
parent 70ac6905c7
commit 9161c605e1
3 changed files with 16 additions and 2 deletions

View File

@ -214,7 +214,7 @@ Extract/crop a region of the image.
- Use `extract` before `resize` for pre-resize extraction. - Use `extract` before `resize` for pre-resize extraction.
- Use `extract` after `resize` for post-resize extraction. - Use `extract` after `resize` for post-resize extraction.
- Use `extract` before and after for both. - Use `extract` twice and `resize` once for extract-then-resize-then-extract in a fixed operation order.
**Throws**: **Throws**:

View File

@ -250,6 +250,9 @@ function resize (widthOrOptions, height, options) {
if (isResizeExpected(this.options)) { if (isResizeExpected(this.options)) {
this.options.debuglog('ignoring previous resize options'); this.options.debuglog('ignoring previous resize options');
} }
if (this.options.widthPost !== -1) {
this.options.debuglog('operation order will be: extract, resize, extract');
}
if (is.defined(widthOrOptions)) { if (is.defined(widthOrOptions)) {
if (is.object(widthOrOptions) && !is.defined(options)) { if (is.object(widthOrOptions) && !is.defined(options)) {
options = widthOrOptions; options = widthOrOptions;
@ -437,7 +440,7 @@ function extend (extend) {
* *
* - Use `extract` before `resize` for pre-resize extraction. * - Use `extract` before `resize` for pre-resize extraction.
* - Use `extract` after `resize` for post-resize extraction. * - Use `extract` after `resize` for post-resize extraction.
* - Use `extract` before and after for both. * - Use `extract` twice and `resize` once for extract-then-resize-then-extract in a fixed operation order.
* *
* @example * @example
* sharp(input) * sharp(input)

View File

@ -319,5 +319,16 @@ describe('Partial image extraction', function () {
s.extract(options); s.extract(options);
assert.strictEqual(warningMessage, 'ignoring previous extract options'); assert.strictEqual(warningMessage, 'ignoring previous extract options');
}); });
it('Multiple extract+resize emits warning', () => {
let warningMessage = '';
const s = sharp();
s.on('warning', function (msg) { warningMessage = msg; });
const options = { top: 0, left: 0, width: 1, height: 1 };
s.extract(options).extract(options);
assert.strictEqual(warningMessage, '');
s.resize(1);
assert.strictEqual(warningMessage, 'operation order will be: extract, resize, extract');
});
}); });
}); });