spritefusion-pixel-snapper

A tool to snap pixels to a perfect grid. Designed to fix messy and inconsistent pixel art generated by AI.

0
0
0
public
Forked

Sprite Fusion Pixel Snapper

Sprite Fusion Pixel Snapper is the repository of the day

A tool to snap pixels to a perfect grid. Designed to fix messy and inconsistent pixel art generated by AI.

Pixel Snapper

Why ?

Current AI image models can’t understand grid-based pixel art.

  • Pixel are inconsistent in size and position.
  • The grid resolution can drift over time.
  • Colors are not tied to a strict palette.

With Pixel Snapper:

  • ✅ Pixel are snapped to a perfect grid.
  • ✅ The grid resolution is consistent and can be scaled to pixel resolution.
  • ✅ Colors are tied to a strict, quantized palette. You can also use a custom palette.

Perfect for

  • AI generated pixel art that needs to be snapped to a grid.
  • Procedural 2D art that doesn’t fit a grid like tilemaps or isometric maps.
  • 2D game assets and 3D textures that need to be perfectly scalable.
Details

Pixel Snapper preserves as much details as possible like dithering.


💻 CLI

Brew

brew install Hugo-Dz/tap/spritefusion-pixel-snapper

Cargo

Installation with Cargo requires Rust. Once installed, the CLI runs as a standalone native binary.

cargo install spritefusion-pixel-snapper

Usage

spritefusion-pixel-snapper <INPUT> <OUTPUT> [COLOR_COUNT] [OPTIONS]
  • <INPUT>: A PNG/JPEG image, or a directory for batch processing.
  • <OUTPUT>: An output PNG, or a different output directory for a batch.
  • [COLOR_COUNT]: Number of palette colors. Defaults to 16.
  • --pixel-size <PIXELS>: Overrides the auto-detected pixel size. The value must be between 1 and half the smallest image dimension.
  • --palette <HEX,...>: Constrains the output to comma-separated six-digit hex colors.

Examples:

# Quantize the image to a 16-color palette
spritefusion-pixel-snapper input.png output.png 16

# Process a directory as a batch
spritefusion-pixel-snapper sprites/batch_inputs sprites/batch_outputs 16

# Override the auto-detected pixel size
spritefusion-pixel-snapper input.png output.png --pixel-size 8
spritefusion-pixel-snapper sprites/batch_inputs sprites/batch_outputs 16 --pixel-size 8

# Use a fixed color palette
spritefusion-pixel-snapper input.png output.png --palette "0d2b45,203c56,544e68,8d697a,d08159,ffaa5e,ffd4a3,ffecd6"
spritefusion-pixel-snapper sprites/batch_inputs sprites/batch_outputs --palette "0d2b45,203c56,544e68,8d697a"

Run spritefusion-pixel-snapper --help to see every option.

Build from source

git clone https://github.com/Hugo-Dz/spritefusion-pixel-snapper.git
cd spritefusion-pixel-snapper
cargo build --release

The binary will be available at target/release/spritefusion-pixel-snapper.

🌐 Web (WASM)

git clone https://github.com/Hugo-Dz/spritefusion-pixel-snapper.git
cd spritefusion-pixel-snapper

Build the WASM module:

wasm-pack build --target web --out-dir pkg --release

Then use the WASM module in your project:

import init, { process_image } from "./pkg/spritefusion_pixel_snapper.js";

await init();

// process_image(inputBytes, kColors?, pixelSizeOverride?, paletteHex?)
const outputBytes = process_image(inputBytes, 16);

// With a custom palette
const recoloredBytes = process_image(inputBytes, null, null, "0f0f1b,ffecd6,ff4d6d,29adff");

Pass null for any optional argument you want to leave on its default behavior.

Acknowledgments

Pixel Snapper is a Sprite Fusion project. Sprite Fusion is a tool to generate TRUE pixel art sprites and animations for game development.

Sprite Fusion Pixel Art Generator

License

MIT License Hugo Duprez

v0.3.3[beta]