ValyroUI Русская версия

Pixel Painter

Draw on a pixel grid and save a PNG. Free, MIT · Image generation › Small editors

A small pixel editor: draw on an 8–32 cell grid with a pencil, eraser, 4-way fill and colour picker, undo whole strokes, and save a PNG with transparency at a whole-number scale without smoothing. The grid has one Tab stop: the arrow keys move a cursor and Space applies the tool, with the cell and its colour announced.

Installation

npx valyro-cli@latest add pixel-painter
npx shadcn@latest add https://valyro.xyz/r/pixel-painter.json
npm install valyro-ui

import 'valyro-ui/styles.css';
import { PixelPainter } from 'valyro-ui';

Props

PropTypeDefault
valuePixelDocumentThe picture: grid size, palette and cells (palette indexes, row by row).
defaultValuePixelDocumentInitial picture when uncontrolled. Default: a transparent 16 × 16 grid with ten colours.
onValueChange(value: PixelDocument) => voidCalled with the new picture when a stroke, fill, undo or redo completes.
toolsPixelTool[]ALL_TOOLSTools on the toolbar, in order. Default: pencil, eraser, fill, picker.
activeColorIndexnumberPalette index of the drawing colour.
defaultActiveColorIndexnumberInitial drawing colour when uncontrolled. Default: the first opaque palette entry.
onActiveColorIndexChange(index: number) => voidCalled with the new activeColorIndex when it changes.
historyLimitnumber50Most undoable actions. Default 50.
exportScalenumber1Whole-number size factor of the PNG, 1…64; each cell becomes scale × scale pixels without smoothing. Default 1.
onExport(blob: Blob) => voidReceives the PNG. Without it, the save button downloads the file.
fileNamestring'pixel-art.png'Name of the downloaded file. Default pixel-art.png.
labelsPartial<PixelPainterLabels>Overrides for the built-in English text; keys left out keep their defaults.

Related components

Previous: Gradient Mixer · Next: Code Block · All Image generation