This project is a Node.js port of the Legofy Python library from Juan Potato. Full feature and API parity is not ensured.
LEGOfy aims at converting an image (no GIF support) into a mosaic of 1×1 colored bricks. It is useless but hell a lot of fun. See the example for, y’know, an example.
npm install -g node-legofy
LEGOfy input image from stdin and send output to stdout.
legofy [options]
Name | Description |
---|---|
-h, --help |
Bring help. |
-v, --version |
Show version. |
-f, --format=<format> |
Set output format (png or jpeg ) [default: jpeg]. |
-q, --quality=<quality> |
Preset for the performance/quality options [default: good]. |
--pixel-interval=<interval> |
Set pixel interval for average color computation (higher means faster but less accurate). |
--pattern-quality=<quality> |
Canvas pattern quality. |
--filter-quality=<quality> |
Canvas filter quality (same values as pattern quality). |
The options taking a quality argument can be one of fast
, good
, best
,
and nearest
.
Example:
legofy < images/benchmark/sample-1.jpg > images/benchmark/sample-1.lego.jpg
import legofy from 'node-legofy'
inputStream
.pipe(legofy())
.pipe(outputStream)
Using the vinyl-transform package to adapt a Node.js transform stream to a Vinyl stream.
import fs from 'vinyl-fs'
import transform from 'vinyl-transform'
import legofy from 'node-legofy'
fs.src('images/*.png')
.pipe(transform(legofy))
.pipe(fs.dest('dest/'))
On Mac OS X, there is an installation issue with cairo
not being found. In this case, you can easily install all node-canvas
module dependencies through Homebrew:
brew install pkg-config cairo libpng jpeg giflib
And install Xcode Command Line Tools if you didn’t do it before:
xcode-select --install
npm run benchmark