Support modulate op with non-sRGB pipeline colourspace #3620

This commit is contained in:
Lovell Fuller 2023-04-17 19:53:48 +01:00
parent b763801d68
commit 5f8646d937
2 changed files with 6 additions and 2 deletions

View File

@ -23,6 +23,9 @@ Requires libvips v8.14.2
* Ensure profile-less CMYK to CMYK roundtrip skips colourspace conversion.
[#3620](https://github.com/lovell/sharp/issues/3620)
* Add support for `modulate` operation when using non-sRGB pipeline colourspace.
[#3620](https://github.com/lovell/sharp/issues/3620)
### v0.32.0 - 24th March 2023
* Default to using sequential rather than random access read where possible.

View File

@ -186,6 +186,7 @@ namespace sharp {
VImage Modulate(VImage image, double const brightness, double const saturation,
int const hue, double const lightness) {
VipsInterpretation colourspaceBeforeModulate = image.interpretation();
if (HasAlpha(image)) {
// Separate alpha channel
VImage alpha = image[image.bands() - 1];
@ -195,7 +196,7 @@ namespace sharp {
{ brightness, saturation, 1},
{ lightness, 0.0, static_cast<double>(hue) }
)
.colourspace(VIPS_INTERPRETATION_sRGB)
.colourspace(colourspaceBeforeModulate)
.bandjoin(alpha);
} else {
return image
@ -204,7 +205,7 @@ namespace sharp {
{ brightness, saturation, 1 },
{ lightness, 0.0, static_cast<double>(hue) }
)
.colourspace(VIPS_INTERPRETATION_sRGB);
.colourspace(colourspaceBeforeModulate);
}
}