diff --git a/src/pipeline.cc b/src/pipeline.cc index 15ab9103..1732f7a4 100644 --- a/src/pipeline.cc +++ b/src/pipeline.cc @@ -367,11 +367,12 @@ class PipelineWorker : public Napi::AsyncWorker { image = sharp::EnsureAlpha(image, 1); } + VipsBandFormat premultiplyFormat = image.format(); bool const shouldPremultiplyAlpha = sharp::HasAlpha(image) && (shouldResize || shouldBlur || shouldConv || shouldSharpen); if (shouldPremultiplyAlpha) { - image = image.premultiply(); + image = image.premultiply().cast(premultiplyFormat); } // Resize @@ -583,13 +584,7 @@ class PipelineWorker : public Napi::AsyncWorker { // Reverse premultiplication after all transformations if (shouldPremultiplyAlpha) { - image = image.unpremultiply(); - // Cast pixel values to integer - if (sharp::Is16Bit(image.interpretation())) { - image = image.cast(VIPS_FORMAT_USHORT); - } else { - image = image.cast(VIPS_FORMAT_UCHAR); - } + image = image.unpremultiply().cast(premultiplyFormat); } baton->premultiplied = shouldPremultiplyAlpha; diff --git a/test/fixtures/expected/extract-alpha-16bit.png b/test/fixtures/expected/extract-alpha-16bit.png index bb8b47c2..91537410 100644 Binary files a/test/fixtures/expected/extract-alpha-16bit.png and b/test/fixtures/expected/extract-alpha-16bit.png differ diff --git a/test/fixtures/expected/modulate-hue-angle-120.png b/test/fixtures/expected/modulate-hue-angle-120.png index 59ef7f68..0a6d0e9d 100644 Binary files a/test/fixtures/expected/modulate-hue-angle-120.png and b/test/fixtures/expected/modulate-hue-angle-120.png differ diff --git a/test/fixtures/expected/modulate-hue-angle-150.png b/test/fixtures/expected/modulate-hue-angle-150.png index 5ad29b03..e776fc4a 100644 Binary files a/test/fixtures/expected/modulate-hue-angle-150.png and b/test/fixtures/expected/modulate-hue-angle-150.png differ diff --git a/test/fixtures/expected/modulate-hue-angle-180.png b/test/fixtures/expected/modulate-hue-angle-180.png index 95944f6e..6b3f2e70 100644 Binary files a/test/fixtures/expected/modulate-hue-angle-180.png and b/test/fixtures/expected/modulate-hue-angle-180.png differ diff --git a/test/fixtures/expected/modulate-hue-angle-210.png b/test/fixtures/expected/modulate-hue-angle-210.png index d85ab59c..ca489f0c 100644 Binary files a/test/fixtures/expected/modulate-hue-angle-210.png and b/test/fixtures/expected/modulate-hue-angle-210.png differ diff --git a/test/fixtures/expected/modulate-hue-angle-240.png b/test/fixtures/expected/modulate-hue-angle-240.png index 591af1a7..8bedbbfa 100644 Binary files a/test/fixtures/expected/modulate-hue-angle-240.png and b/test/fixtures/expected/modulate-hue-angle-240.png differ diff --git a/test/fixtures/expected/modulate-hue-angle-270.png b/test/fixtures/expected/modulate-hue-angle-270.png index c01996a5..f2bf4f9e 100644 Binary files a/test/fixtures/expected/modulate-hue-angle-270.png and b/test/fixtures/expected/modulate-hue-angle-270.png differ diff --git a/test/fixtures/expected/modulate-hue-angle-30.png b/test/fixtures/expected/modulate-hue-angle-30.png index 4cafb5a6..b7dfce14 100644 Binary files a/test/fixtures/expected/modulate-hue-angle-30.png and b/test/fixtures/expected/modulate-hue-angle-30.png differ diff --git a/test/fixtures/expected/modulate-hue-angle-300.png b/test/fixtures/expected/modulate-hue-angle-300.png index 05ec97c8..69238c3b 100644 Binary files a/test/fixtures/expected/modulate-hue-angle-300.png and b/test/fixtures/expected/modulate-hue-angle-300.png differ diff --git a/test/fixtures/expected/modulate-hue-angle-330.png b/test/fixtures/expected/modulate-hue-angle-330.png index 377c173f..c4250130 100644 Binary files a/test/fixtures/expected/modulate-hue-angle-330.png and b/test/fixtures/expected/modulate-hue-angle-330.png differ diff --git a/test/fixtures/expected/modulate-hue-angle-360.png b/test/fixtures/expected/modulate-hue-angle-360.png index bb937aa4..dd747413 100644 Binary files a/test/fixtures/expected/modulate-hue-angle-360.png and b/test/fixtures/expected/modulate-hue-angle-360.png differ diff --git a/test/fixtures/expected/modulate-hue-angle-60.png b/test/fixtures/expected/modulate-hue-angle-60.png index fa2eded8..3305d787 100644 Binary files a/test/fixtures/expected/modulate-hue-angle-60.png and b/test/fixtures/expected/modulate-hue-angle-60.png differ diff --git a/test/fixtures/expected/modulate-hue-angle-90.png b/test/fixtures/expected/modulate-hue-angle-90.png index 39603417..077a92a0 100644 Binary files a/test/fixtures/expected/modulate-hue-angle-90.png and b/test/fixtures/expected/modulate-hue-angle-90.png differ