mirror of
https://github.com/lovell/sharp.git
synced 2025-07-09 18:40:16 +02:00
Ensure 16-bit PNG output uses correct bitdepth #2958
This commit is contained in:
parent
2a0077c481
commit
2deced0fb9
@ -824,7 +824,7 @@ class PipelineWorker : public Napi::AsyncWorker {
|
||||
->set("filter", baton->pngAdaptiveFiltering ? VIPS_FOREIGN_PNG_FILTER_ALL : VIPS_FOREIGN_PNG_FILTER_NONE)
|
||||
->set("palette", baton->pngPalette)
|
||||
->set("Q", baton->pngQuality)
|
||||
->set("bitdepth", baton->pngBitdepth)
|
||||
->set("bitdepth", sharp::Is16Bit(image.interpretation()) ? 16 : baton->pngBitdepth)
|
||||
->set("dither", baton->pngDither)));
|
||||
baton->bufferOut = static_cast<char*>(area->data);
|
||||
baton->bufferOutLength = area->length;
|
||||
@ -993,7 +993,7 @@ class PipelineWorker : public Napi::AsyncWorker {
|
||||
->set("filter", baton->pngAdaptiveFiltering ? VIPS_FOREIGN_PNG_FILTER_ALL : VIPS_FOREIGN_PNG_FILTER_NONE)
|
||||
->set("palette", baton->pngPalette)
|
||||
->set("Q", baton->pngQuality)
|
||||
->set("bitdepth", baton->pngBitdepth)
|
||||
->set("bitdepth", sharp::Is16Bit(image.interpretation()) ? 16 : baton->pngBitdepth)
|
||||
->set("dither", baton->pngDither));
|
||||
baton->formatOut = "png";
|
||||
} else if (baton->formatOut == "webp" || (mightMatchInput && isWebp) ||
|
||||
|
@ -112,6 +112,18 @@ describe('PNG', function () {
|
||||
});
|
||||
});
|
||||
|
||||
it('16-bit grey+alpha PNG roundtrip', async () => {
|
||||
const after = await sharp(fixtures.inputPng16BitGreyAlpha)
|
||||
.toColourspace('grey16')
|
||||
.toBuffer();
|
||||
|
||||
const [statsBefore, statsAfter] = await Promise.all([
|
||||
sharp(fixtures.inputPng16BitGreyAlpha).stats(),
|
||||
sharp(after).stats()
|
||||
]);
|
||||
assert.deepStrictEqual(statsAfter.channels[1], statsBefore.channels[1]);
|
||||
});
|
||||
|
||||
it('Valid PNG libimagequant palette value does not throw error', function () {
|
||||
assert.doesNotThrow(function () {
|
||||
sharp().png({ palette: false });
|
||||
|
Loading…
x
Reference in New Issue
Block a user