Method

VipsImageunpremultiply

Declaration [src]

int
vips_unpremultiply (
  VipsImage* in,
  VipsImage** out,
  ...
)

Description [src]

Optional arguments:

  • max_alpha: %gdouble, maximum value for alpha
  • alpha_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.
...
 

NULL-terminated list of optional named arguments.

Return value

Returns: int
 

0 on success, -1 on error.