UNPKG

neuquant

Version:

JavaScript port of the NeuQuant image quantization algorithm

76 lines (63 loc) 2.3 kB
var nq = require('../'); var assert = require('assert'); var fs = require('fs'); var buf = fs.readFileSync(__dirname + '/trees.pixels'); describe('neuquant', function() { it('gets a palette', function() { var palette = nq.getPalette(buf); assert(Buffer.isBuffer(palette)); assert.equal(palette.length, 256 * 3); }); it('gets a palette at a custom quality setting', function() { var palette = nq.getPalette(buf, 5); assert(Buffer.isBuffer(palette)); assert.equal(palette.length, 256 * 3); assert.notDeepEqual(palette, nq.getPalette(buf)); }); it('indexes pixels using the palette', function() { var palette = nq.getPalette(buf); var indexes = nq.index(buf, palette); assert(Buffer.isBuffer(indexes)); assert.equal(indexes.length, buf.length / 3); }); it('can produce palette and indexes in one call', function() { var res = nq.quantize(buf); assert(Buffer.isBuffer(res.palette)); assert.equal(res.palette.length, 256 * 3); assert(Buffer.isBuffer(res.indexed)); assert.equal(res.indexed.length, buf.length / 3); }); it('can produce palette and indexes in one call using non-default quality', function() { var res = nq.quantize(buf, 5); assert(Buffer.isBuffer(res.palette)); assert.equal(res.palette.length, 256 * 3); assert.notDeepEqual(res.palette, nq.getPalette(buf)); assert(Buffer.isBuffer(res.indexed)); assert.equal(res.indexed.length, buf.length / 3); }); describe('stream', function() { it('quantizes output', function(done) { var s = new nq.Stream(400, 533); s.on('data', function(data) { assert(Buffer.isBuffer(s.format.palette)); assert.equal(s.format.palette.length, 256 * 3); assert.equal(data.length, buf.length / 3); done(); }); s.end(buf); }); it('handles multiple frames', function(done) { var s = new nq.Stream(400, 533); var c = 0; s.on('data', function(data) { assert(Buffer.isBuffer(s.format.palette)); assert.equal(s.format.palette.length, 256 * 3); assert.equal(data.length, buf.length / 3); if (++c === 2) done(); }); s.write(buf); s.end(buf); }); }); });