### Constructor

# Vips Image tonelut

#### Declaration [src]

    int
    vips_tonelut (
      VipsImage** out,
      ...
    )

#### Description [src]

`vips_tonelut()` generates a tone curve for the adjustment of image levels.

This is mostly designed for adjusting the L* part of a LAB image in a way suitable for print work, but you can use it for other things too.

The curve is an unsigned 16-bit image with (`in_max` + 1) entries, each in the range [0, `out_max`].

`Lb`, `Lw` are expressed as 0-100, as in LAB colour space. You specify the scaling for the input and output images with the `in_max` and `out_max` parameters.

Optional arguments

- `in_max`: `gint`, input range
- `out_max`: `gint`, output range
- `Lb`: `gdouble`, black-point [0-100]
- `Lw`: `gdouble`, white-point [0-100]
- `Ps`: `gdouble`, shadow point (eg. 0.2)
- `Pm`: `gdouble`, mid-tone point (eg. 0.5)
- `Ph`: `gdouble`, highlight point (eg. 0.8)
- `S`: `gdouble`, shadow adjustment (+/- 30)
- `M`: `gdouble`, mid-tone adjustment (+/- 30)
- `H`: `gdouble`, highlight adjustment (+/- 30).

This constructor 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 function 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.