Method
VipsImageunpremultiply
Declaration [src]
int
vips_unpremultiply (
VipsImage* in,
VipsImage** out,
...
)
Description [src]
Unpremultiplies any alpha channel.
Band alpha_band
(by default the final band) contains the alpha and all
other bands are transformed as:
alpha = (int) clip(0, in[in.bands - 1], max_alpha);
norm = (double) alpha / max_alpha
if (alpha == 0)
out = [0, ..., 0, alpha]
else
out = [in[0] / norm, ..., in[in.bands - 1] / norm, alpha]
So for an N-band image, the first N - 1 bands are divided by the clipped and normalised final band, the final band is clipped. If there is only a single band, the image is passed through unaltered.
The result is VIPS_FORMAT_FLOAT
unless the input format is
VIPS_FORMAT_DOUBLE
, in which case the output is double as well.
max_alpha
has the default value 255, or 65535 for images tagged as
VIPS_INTERPRETATION_RGB16
or VIPS_INTERPRETATION_GREY16
, and
1.0 for images tagged as [enum@Vips.Interpretation.scRGB.
Non-complex images only.
Optional arguments
max_alpha
: %gdouble, maximum value for alphaalpha_band
: %gint, band containing alpha data
See also
This method is not directly available to language bindings.
Parameters
out
-
Type:
VipsImage
Output image.
The argument will be set by the function. The caller of the method takes ownership of the returned data, and is responsible for freeing it. ...
-
Type:
NULL
-terminated list of optional named arguments.