Method

VipsImageicc_transform

Declaration [src]

int
vips_icc_transform (
  VipsImage* in,
  VipsImage** out,
  const char* output_profile,
  ...
)

Description [src]

Transform an image with a pair of ICC profiles.

The input image is moved to profile-connection space with the input profile and then to the output space with the output profile.

The input profile is searched for in three places:

  1. If embedded is set, libvips will try to use any profile in the input image metadata. You can test for the presence of an embedded profile with vips_image_get_typeof() with VIPS_META_ICC_NAME as an argument. This will return GType 0 if there is no profile.

  2. Otherwise, if input_profile is set, libvips will try to load a profile from the named file. This can also be the name of one of the built-in profiles.

  3. Otherwise, libvips will try to pick a compatible profile from the set of built-in profiles.

If black_point_compensation is set, LCMS black point compensation is enabled.

depth defaults to 8, or 16 if in is a 16-bit image.

The output image has the output profile attached to the VIPS_META_ICC_NAME field.

Use vips_icc_import() and vips_icc_export() to do either the first or second half of this operation in isolation.

::: tip “Optional arguments” * pcs: VipsPCS, use XYZ or LAB PCS * intent: VipsIntent, transform with this intent * black_point_compensation: gboolean, enable black point compensation * embedded: gboolean, use profile embedded in input image * input_profile: gchararray, get the input profile from here * depth: gint, depth of output image in bits.

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.
output_profile const char*
 

Get the output profile from here.

 The data is owned by the caller of the function.
 The string is a NUL terminated UTF-8 string.
... none
 

NULL-terminated list of optional named arguments.

Return value

Returns: int
 

0 on success, -1 on error.