# image/rotate
Rotate an `Image` or a `PixelBuffer` clockwise by 90, 180, or 270 degrees,
returning a new value of the same type. Angles outside 0–359 are normalised
mod 360, so `-90` means 270.
## Syntax
[image/rotate $v $deg]
## Parameters
- `$v` — an `Image` or `PixelBuffer` value
- `$deg` — rotation in degrees (integer multiple of 90)
## Examples
set img [image/open "test/fixtures/images/test.png"] # 8x6 [image/dims [image/rotate $img 90]] # → %{ :w 6 :h 8 } [image/dims [image/rotate $img 180]] # → %{ :w 8 :h 6 } [image/rotate $img 45] # → %Err{:message "image/rotate: degrees must be a multiple of 90"} set buf [image/load "test/fixtures/images/test.png"] [image/dims [image/rotate $buf 90]] # → %{ :w 6 :h 8 }
## Returns
A new `Image`/`PixelBuffer` (90/270 swap width and height; 0/180/360 keep
them). `%Err{:message}` when `$deg` is missing, non-integer, or not a
multiple of 90. `nil` when `$v` is neither an `Image` nor a `PixelBuffer`.
## See Also
`image/flip`, `image/flop`, `image/resize`, `image/encode`