mirror of
https://github.com/lovell/sharp.git
synced 2025-07-09 10:30:15 +02:00
Ensure extend op is sequential for multi-page TIFF #4069
This commit is contained in:
parent
52b9dc0f63
commit
397ee492d9
@ -18,6 +18,9 @@ Requires libvips v8.15.2
|
|||||||
* Expose `bilinear` resizing kernel (and interpolator).
|
* Expose `bilinear` resizing kernel (and interpolator).
|
||||||
[#4061](https://github.com/lovell/sharp/issues/4061)
|
[#4061](https://github.com/lovell/sharp/issues/4061)
|
||||||
|
|
||||||
|
* Ensure `extend` operation stays sequential for multi-page TIFF (regression in 0.32.0).
|
||||||
|
[#4069](https://github.com/lovell/sharp/issues/4069)
|
||||||
|
|
||||||
### v0.33.3 - 23rd March 2024
|
### v0.33.3 - 23rd March 2024
|
||||||
|
|
||||||
* Upgrade to libvips v8.15.2 for upstream bug fixes.
|
* Upgrade to libvips v8.15.2 for upstream bug fixes.
|
||||||
|
@ -566,6 +566,7 @@ class PipelineWorker : public Napi::AsyncWorker {
|
|||||||
std::vector<double> background;
|
std::vector<double> background;
|
||||||
std::tie(image, background) = sharp::ApplyAlpha(image, baton->extendBackground, shouldPremultiplyAlpha);
|
std::tie(image, background) = sharp::ApplyAlpha(image, baton->extendBackground, shouldPremultiplyAlpha);
|
||||||
|
|
||||||
|
image = sharp::StaySequential(image, baton->input->access, nPages > 1);
|
||||||
image = nPages > 1
|
image = nPages > 1
|
||||||
? sharp::EmbedMultiPage(image,
|
? sharp::EmbedMultiPage(image,
|
||||||
baton->extendLeft, baton->extendTop, baton->width, baton->height,
|
baton->extendLeft, baton->extendTop, baton->width, baton->height,
|
||||||
|
@ -73,20 +73,6 @@ describe('Extend', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('extend top with mirroring uses ordered read', async () => {
|
|
||||||
const data = await sharp(fixtures.inputJpg)
|
|
||||||
.extend({
|
|
||||||
extendWith: 'mirror',
|
|
||||||
top: 1
|
|
||||||
})
|
|
||||||
.png({ compressionLevel: 0 })
|
|
||||||
.toBuffer();
|
|
||||||
|
|
||||||
const { width, height } = await sharp(data).metadata();
|
|
||||||
assert.strictEqual(2725, width);
|
|
||||||
assert.strictEqual(2226, height);
|
|
||||||
});
|
|
||||||
|
|
||||||
it(`extend sides unequally with RGBA (${extendWith})`, function (done) {
|
it(`extend sides unequally with RGBA (${extendWith})`, function (done) {
|
||||||
sharp(fixtures.inputPngWithTransparency16bit)
|
sharp(fixtures.inputPngWithTransparency16bit)
|
||||||
.resize(120)
|
.resize(120)
|
||||||
@ -127,6 +113,39 @@ describe('Extend', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('extend top with mirroring uses ordered read', async () => {
|
||||||
|
const data = await sharp(fixtures.inputJpg)
|
||||||
|
.extend({
|
||||||
|
extendWith: 'mirror',
|
||||||
|
top: 1
|
||||||
|
})
|
||||||
|
.png({ compressionLevel: 0 })
|
||||||
|
.toBuffer();
|
||||||
|
|
||||||
|
const { width, height } = await sharp(data).metadata();
|
||||||
|
assert.strictEqual(2725, width);
|
||||||
|
assert.strictEqual(2226, height);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('multi-page extend uses ordered read', async () => {
|
||||||
|
const multiPageTiff = await sharp(fixtures.inputGifAnimated, { animated: true })
|
||||||
|
.resize({ width: 8, height: 48 })
|
||||||
|
.tiff()
|
||||||
|
.toBuffer();
|
||||||
|
|
||||||
|
const data = await sharp(multiPageTiff, { pages: -1 })
|
||||||
|
.extend({
|
||||||
|
background: 'red',
|
||||||
|
top: 1
|
||||||
|
})
|
||||||
|
.png({ compressionLevel: 0 })
|
||||||
|
.toBuffer();
|
||||||
|
|
||||||
|
const { width, height } = await sharp(data).metadata();
|
||||||
|
assert.strictEqual(8, width);
|
||||||
|
assert.strictEqual(1470, height);
|
||||||
|
});
|
||||||
|
|
||||||
it('missing parameter fails', function () {
|
it('missing parameter fails', function () {
|
||||||
assert.throws(function () {
|
assert.throws(function () {
|
||||||
sharp().extend();
|
sharp().extend();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user