bitmapped
v0.1.0
Published
Palette-aware image pixelation library for pixel artists and game developers
Maintainers
Readme
bitmapped
Palette-aware image pixelation for pixel artists and game developers.
Takes images, pixelates them via Canvas block averaging, matches colors to user-provided palettes using perceptual color distance algorithms, optionally applies dithering, and exports the result.
Documentation | Live Demo | GitHub
Installation
npm install bitmappedQuick Start
import { process } from 'bitmapped';
import { parseHex } from 'bitmapped/palette';
// Define a palette
const palette = parseHex(
'#000000 #1D2B53 #7E2553 #008751 #AB5236 #5F574F #C2C3C7 #FFF1E8',
);
// Process an image
const result = process(imageData, {
blockSize: 8,
palette,
dithering: 'floyd-steinberg',
distanceAlgorithm: 'oklab',
});
// result.imageData is the pixelated, palette-matched ImageDataSubpath Imports
Cherry-pick only what you need:
import { redmeanDistance, oklabDistance } from 'bitmapped/color';
import { parseHex, parseGPL, parseASE } from 'bitmapped/palette';
import { floydSteinberg, bayerDither } from 'bitmapped/dither';
import { toPNGBlob, downloadPNG } from 'bitmapped/export';API Overview
Core
The main process() pipeline: pixelate → color match → dither → export.
process(imageData, options)— Full processing pipelinepixelateBlockAverage(imageData, blockSize)— Block-average pixelationpixelateDownscale(imageData, blockSize)— Fast downscale-upscale pixelation
Color (bitmapped/color)
Color distance algorithms and palette matching.
createPaletteMatcher(palette, algorithm)— Create a reusable color matcherfindNearestColor(color, palette, algorithm)— Find closest palette colorfindNearestColors(color, palette, n, algorithm)— Find N closest palette colorsmapImageToPalette(imageData, palette, algorithm)— Map all pixels to palette
Distance Algorithms
| Algorithm | Accuracy | Performance | Best For |
| ----------- | -------- | ----------- | ------------------------- |
| euclidean | Low | Fastest | Quick previews |
| redmean | Medium | Fast | General use |
| cie76 | High | Medium | Color-critical work |
| ciede2000 | Highest | Slow | Maximum accuracy |
| oklab | High | Medium | Best accuracy/speed ratio |
Palette (bitmapped/palette)
Parse palette files and extract colors from images.
| Format | Function | File Extension |
| --------------------- | -------------------------------------- | -------------- |
| GIMP Palette | parseGPL(text) | .gpl |
| Hex list | parseHex(text) | .hex, .txt |
| Adobe Swatch Exchange | parseASE(buffer) | .ase |
| Image extraction | extractPalette(imageData, maxColors) | any image |
Dither (bitmapped/dither)
| Algorithm | Type | Error Diffused | Character |
| ---------------- | --------------- | -------------- | ------------------------- |
| floydSteinberg | Error diffusion | 100% | Smooth gradients |
| atkinsonDither | Error diffusion | 75% | High contrast, retro feel |
| bayerDither | Ordered | N/A | Crosshatch pattern |
Export (bitmapped/export)
toPNGBlob(canvas)— Convert canvas to PNG BlobdownloadPNG(canvas, filename)— Trigger PNG downloadimageDataToBlob(imageData)— Convert ImageData to PNG Blob
License
MIT
