### Method

# Vips Image icc_import

#### Declaration [src]

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

#### Description [src]

Import an image from device space to D65 LAB with an ICC profile.

If `pcs` is set to `VIPS_PCS_XYZ`, use CIE XYZ PCS instead.

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.

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.

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.

#### Return value

Type: `int`

0 on success, -1 on error.