Add support for negating only non-alpha channels

Fixes #1035
This commit is contained in:
Espen Hovlandsdal
2021-07-22 23:27:27 +02:00
committed by Lovell Fuller
parent 21d1a7ca62
commit b7ddbe71f7
14 changed files with 122 additions and 6 deletions

View File

@@ -112,6 +112,19 @@ namespace sharp {
}
}
/**
* Produce the "negative" of the image.
*/
VImage Negate(VImage image, bool const negateAlpha) {
if (HasAlpha(image) && !negateAlpha) {
// Separate alpha channel
VImage alpha = image[image.bands() - 1];
return RemoveAlpha(image).invert().bandjoin(alpha);
} else {
return image.invert();
}
}
/*
* Gaussian blur. Use sigma of -1.0 for fast blur.
*/