rotate_pixel_art
Rotate a pixel-art sprite by any angle and keep it pixel art, like the Pixel Art Rotate tool on voidless.dev/tools. RotSprite method: the sprite is scaled up 8x with Scale2x (EPX) three times so diagonals stay smooth, rotated with nearest neighbour, and scaled back down taking each 8x8 block's most common colour, so lines don't break into stairs and no new colours appear (the result's palette is a subset of the sprite's, with hard alpha). Quarter turns are exact. The canvas grows to fit. Angles are degrees, clockwise. Give directions (e.g. 8 or 16) for a sweep starting at angle: every frame on one canvas size, returned as a GIF and a sprite sheet plus the angle list. It turns the picture in the plane (a top-down car, ship or turret heading 16 ways, a swinging sword, a tilted prop); to draw a character from its other sides (front, back, side views), use rotate_sprite instead. Sprites up to 512x512; sprite pixels x directions up to 1048576 (a 256x256 sprite in 16 directions). Images up to 2048x2048, 256 frames, 32 MB of input per call. Free: no credits.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"image": "<image>"
},
"name": "rotate_pixel_art"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| fps | No | Sweep GIF frame rate | |
| save | No | Also save the result to your Voidless library (free, private) and return its asset id and cdn.voidless.dev URL, for passing to the next tool without base64 | |
| angle | No | Degrees clockwise; with directions, the first angle of the sweep | |
| image | Yes | An image: an https URL (e.g. a cdn.voidless.dev link from get_asset or a saved result), a library image key (assets/…png, as get_asset lists it), a data: URI, or base64 PNG/GIF. | |
| scale | No | Scale the returned images up (nearest neighbour) | |
| expand | No | Grow the canvas so the rotated sprite is never cut off (false keeps the sprite's size) | |
| method | No | rotsprite = Scale2x x3 then rotate (clean lines); nearest = plain nearest-neighbour rotation | rotsprite |
| columns | No | Sweep sheet: frames per row (default all in one row up to 16) | |
| directions | No | 1 = one rotation; N = a sweep of N angles 360/N apart (8 or 16 for a top-down game) | |
| downsample | No | rotsprite: each output pixel is its 8x8 block's most common colour (mode) or its centre sample (nearest) | mode |