neu

neuquant

JavaScript port of the NeuQuant image quantization algorithm

Showing:

Popularity

Downloads/wk

24

GitHub Stars

25

Maintenance

Last Commit

6yrs ago

Contributors

1

Package

Dependencies

1

Size (min+gzip)

2.4KB

License

MIT

Type Definitions

Tree-Shakeable

No?

Categories

Readme

neuquant

A JavaScript port of Anthony Dekker's NeuQuant image quantization algorithm including a pixel-stream interface.

Installation

npm install neuquant

Example

var neuquant = require('neuquant');
var JPEGDecoder = require('jpg-stream/decoder');
var GIFDecoder = require('gif-stream/decoder');

// get a palette and indexed pixel data for input RGB image
var res = neuquant.quantize(pixels, quality);
// => { palette: <Buffer ...>, indexed: <Buffer...> }

// streaming interface example
fs.createReadStream('in.jpg')
  .pipe(new JPEGDecoder)
  .pipe(new neuquant.Stream)
  .pipe(new GIFEncoder)
  .pipe(fs.createWriteStream('out.gif'));

API

getPalette(pixels, quality = 10)

Returns a buffer containing a palette of 256 RGB colors for the input RGB image. The quality parameter is set to 10 by default, but can be changed to increase or decrease quality at the expense of performance. The lower the number, the higher the quality.

index(pixels, palette)

Returns a new buffer containing the indexed pixel data for the input image using the given palette, which is a buffer obtained from the above method.

quantize(pixels, quality = 10)

Combines the above two methods and returns an object containing both a palette buffer and the indexed pixel data at once.

Stream

As shown in the above example, a streaming API can also be used. You can pipe data to it, including multi-frame data, and it will produce an indexed output chunk for each frame. You can access the palette for each frame by listening for frame events on the stream.

Authors

  • The original NeuQuant algorithm was developed by Anthony Dekker.

  • The JavaScript port of NeuQuant was originally done by Johan Nordberg for GIF.js.

  • Streaming interface, wrapper API, and code cleanup by Devon Govett.

License

MIT

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100