#What you'll learn
- The exact order Pixxoni processes an image in, so you can predict every result.
- How each upscaler chains with nearest neighbour, and how sizes are rounded and capped.
- How Detect pixel grid finds a grid, its limits, and how it handles non-square pixels.
- What a recipe contains, what travels with a sent asset, and what a cloud project stores.
- How to run consistent batches and verify them.
#Before you start
- Read the Pixxoni Intermediate guide first: exact sizes, fit modes, the canvas and recipes.
- A known-good test sprite (with diagonals and transparency) makes it easy to compare algorithms.
#How-tos
#How to predict a result: the pipeline
Every image, frame and sheet cell goes through the same steps:
- Clean up transparency: fully transparent pixels are all treated as the same "clear" colour, so upscalers don't see hidden colour differences.
- Detect the grid (only with Detect pixel grid): the image is rebuilt at its real 1× size first.
- Work out the target size from the factor or the exact size, the pixel shape and the fit mode (see below).
- Resample with the chosen algorithm to exactly that size.
- Place on the canvas if a canvas or a Fill + crop / Fit + pad box applies, using the anchor and edge colour.
#How to control size, rounding and the cap
- By factor: the result is width × factor × pixel shape by height × factor. Any factor from 0.05 to 64 can be typed; the chips offer 0.5× to 8×.
- Exact size with Keep the shape on scales by the smaller ratio (Fit) or the larger one (Fill + crop), so the art keeps its shape.
- Sizes are rounded to whole pixels, and are never less than 1.
- If either side would pass 8192 pixels, the whole result is scaled down to fit and you get a "Capped at 8192 px per side" warning.
- A canvas is also capped at 8192 per side.
#How to chain upscalers on purpose
- Each pixel-art upscaler has a native size: Scale2x (EPX) and Eagle 2×, Scale3x 3×, Scale4x 4× (Scale2x twice).
- Smooth (xBR-lite) runs once for 2×, or twice when you need more than about 2.5×.
- Pixxoni runs the upscaler at its native size, then uses nearest neighbour to reach your exact target. So Scale2x at 8× is "rounded at 2×, then blocked up 4×".
- Upscalers only run when both sides get bigger. Shrinking always uses nearest, except Mode (majority).
- To get rounder results at large sizes, run the job twice: Scale2x at 2×, Send to App → back into Pixxoni (or export and reopen), then Scale2x again.
#How to get the most from grid detection
- Pixxoni measures where colours change along every row and column, then looks for the cell size (2 to 64 pixels) and offset whose lines catch the most change.
- Width and height are checked separately, so stretched pixels (for example 2 wide by 1 tall) are found too.
- Each cell is rebuilt from the per-channel median of its inner pixels, which makes clean art exact and removes JPEG noise.
- For an animation or a sprite sheet, the grid found on the first frame is used for every frame, so they all line up.
- It can't help when the image was resized by a non-whole factor, rotated, or mixes art at different scales (for example a pixel sprite on a smooth UI). Crop to one piece of art first.
#How to verify a batch is pixel-perfect
- Set up and save a recipe.
- Click Batch in the top bar and pick the files (or drop several at once).
- Each tile in Batch scale shows the new size and either crisp or how many colours were added.
- Anything other than crisp (with a non-smooth algorithm) points to a source with half-transparent pixels or earlier blurring.
- Download ZIP saves the whole set.
#How to read a recipe
A recipe is a small set of fields (saved recipes live on this device; sent assets carry the recipe in meta.recipe):
| Field | Meaning |
|---|---|
| algo | nearest, scale2x, scale3x, scale4x, eagle, xbr, mode or grid |
| by | factor or size |
| factor | the scale factor |
| width, height | the exact size (0 = not set) |
| lock, fit | keep the shape; fit, fill or fit-pad |
| pixelAspect | 1:1, 2:1, 1:2, 4:3, 3:4 or 8:7 |
| canvas, canvasW, canvasH | the canvas on/off and its size |
| anchor | tl, t, tr, l, c, r, bl, b, br |
| pad | transparent or a colour |
A Pixxoni cloud project is a zip with recipe.json and the source (source.png, or frames/0000.png… for animations), so it always re-renders from the original.
#Workflows
#One master sprite, every output size
- Keep the 1× sprite as the master. Never upscale an upscale with nearest neighbour.
- Save one recipe per output: store icon, screenshot size, trailer size.
- Run each recipe on the master and Export. Re-run them all whenever the master changes.
#Restoring and modernising old art
- Detect pixel grid at 1× to recover the original from a screenshot.
- Send to App → Pixxivi to fix any damage by hand.
- Back in Pixxoni, apply Scale3x or Smooth (xBR-lite) for a remastered look, and compare with Split.
#A pipeline step for every sprite in a game
- In Flow, add a Pixxoni step after Pixxula or Pixxani.
- Open each step in Pixxoni, apply the team's saved recipe, and Send result to Flow.
- Sprite sheets keep their columns, and each cell is scaled on its own, so the engine import settings don't change except for the cell size.
#Tips and shortcuts
- 0 fit · 1 real size · + / - zoom · Space play/pause · Ctrl+O open · Ctrl+S export · Ctrl+V paste.
- Sources keep their kind when sent on: an image stays an image, frames stay frames, a sheet stays a sheet.
- Your last still image (up to 1024×1024) and recipe are restored on this device when you come back.
- On phones Pixxoni starts in Split view; Side by side is easier on wide screens.
#Troubleshooting
- A "Capped at 8192 px" warning: lower the factor or the exact size; the result was shrunk to fit.
- A sheet's cells come out uneven: use a whole-number factor so every cell scales to the same whole size.
- Grid detection finds 1× on clearly upscaled art: the art may sit on a smooth background or have been resized by a fraction. Crop to the sprite, or start from a cleaner source.
- Smooth (xBR-lite) adds lots of colours: that's expected; it blends corners. Use Scale2x or Scale3x to keep the palette.
- Mode (majority) does nothing when enlarging: it only shrinks. When enlarging, nearest neighbour is used.