Method
VipsImageunpremultiply
Declaration [src]
int
vips_unpremultiply (
VipsImage* in,
VipsImage** out,
...
)
Description [src]
Optional arguments:
max_alpha: %gdouble, maximum value for alphaalpha_band: %gint, band containing alpha data
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.
Non-complex images only.
See also: vips_premultiply(), vips_flatten().
| This method is not directly available to language bindings. |
Parameters
out |
VipsImage |
Output image. |
|
| The argument will be set by the function. | |
| The instance takes ownership of the data, and is responsible for freeing it. | |
... |
|
|