### Method

# Vips Image reduce

#### Declaration [src]

    int
    vips_reduce (
      VipsImage* in,
      VipsImage** out,
      double hshrink,
      double vshrink,
      ...
    )

#### Description [src]

Reduce `in` by a pair of factors with a pair of 1D kernels.

This will not work well for shrink factors greater than three.

Set `gap` to speed up reducing by having `vips_shrink()` to shrink with a box filter first. The bigger `gap`, the closer the result to the fair resampling. The smaller `gap`, the faster resizing. The default value is 0.0 (no optimization).

This is a very low-level operation: see `vips_resize()` for a more convenient way to resize images.

This operation does not change xres or yres. The image resolution needs to be updated by the application.

Optional arguments

- `kernel`: `VipsKernel`, kernel to interpolate with (default: `VIPS_KERNEL_LANCZOS3`)
- `gap`: `gdouble`, reducing gap to use (default: 0.0)

See also

`vips_shrink()`, `vips_resize()`, `vips_affine()`.

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.

`hshrink`

  Type: `double`

  Horizontal shrink.

`vshrink`

  Type: `double`

  Vertical shrink.

`...`

  Type: ``

  `NULL`-terminated list of optional named arguments.

#### Return value

Type: `int`

0 on success, -1 on error.