# `Image.Options.Rotate`
[🔗](https://github.com/elixir-image/image/blob/v0.72.0/lib/image/options/rotate.ex#L1)

Options and option validation for `Image.rotate/3`.

# `interpolate`

```elixir
@type interpolate() :: :nearest | :bilinear | :bicubic | :lbb | :nohalo | :vsqbs
```

The interpolators that may be selected with the `:interpolate`
option (descriptions from `vips -l interpolate`):

* `:nearest` - nearest-neighbour interpolation
* `:bilinear` (default) - bilinear interpolation
* `:bicubic` - bicubic interpolation (Catmull-Rom)
* `:lbb` - reduced halo bicubic
* `:nohalo` - edge sharpening resampler with halo reduction
* `:vsqbs` - B-Splines with antialiasing smoothing

# `rotation_options`

```elixir
@type rotation_options() :: [
  idy: number(),
  idx: number(),
  ody: number(),
  odx: number(),
  interpolate: interpolate(),
  background: Image.BackgroundColor.spec() | nil
]
```

The options applicable to rotating an
image.

# `validate_options`

```elixir
@spec validate_options(Vix.Vips.Image.t(), Keyword.t()) ::
  {:ok, Keyword.t()} | {:error, Image.error()}
```

Validate the options for `Image.rotate/3`.

The `image` is required to resolve the `:background` option
into a pixel matching the image's bands and color space.

See `t:Image.Options.Rotate.rotation_options/0`.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
