Take page parameter into account when all frames are read (#3059)

This commit is contained in:
Kleis Auke Wolthuizen 2022-01-27 22:42:08 +01:00 committed by GitHub
parent 1c3ba303ea
commit 68823a5edb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 1 deletions

View File

@ -72,7 +72,9 @@ class PipelineWorker : public Napi::AsyncWorker {
int nPages = baton->input->pages; int nPages = baton->input->pages;
if (nPages == -1) { if (nPages == -1) {
// Resolve the number of pages if we need to render until the end of the document // Resolve the number of pages if we need to render until the end of the document
nPages = image.get_typeof(VIPS_META_N_PAGES) != 0 ? image.get_int(VIPS_META_N_PAGES) : 1; nPages = image.get_typeof(VIPS_META_N_PAGES) != 0
? image.get_int(VIPS_META_N_PAGES) - baton->input->page
: 1;
} }
// Get pre-resize page height // Get pre-resize page height

View File

@ -217,4 +217,15 @@ describe('WebP', function () {
assert.strictEqual(updated.height, 570 * 9); assert.strictEqual(updated.height, 570 * 9);
assert.strictEqual(updated.pageHeight, 570); assert.strictEqual(updated.pageHeight, 570);
}); });
it('should take page parameter into account when animated is set', async () => {
const updated = await sharp(fixtures.inputWebPAnimated, { animated: true, page: 2 })
.resize({ height: 570 })
.webp({ effort: 0 })
.toBuffer()
.then(data => sharp(data, { pages: -1 }).metadata());
assert.strictEqual(updated.height, 570 * 7);
assert.strictEqual(updated.pageHeight, 570);
});
}); });