png-stream
A streaming PNG encoder and decoder for Node and the browser.
Supports animated PNGs and
normal still PNGs.
Installation
npm png-stream
For the browser, you can build using Browserify.
Decoding
This example uses the concat-frames
module to collect the output of the PNG decoder into an array of frame objects.
var PNGDecoder = require('png-stream/decoder');
var concat = require('concat-frames');
fs.createReadStream('in.png')
.pipe(new PNGDecoder)
.pipe(concat(function(frames) {
}));
Encoding
You can encode a PNG by writing or piping pixel data to a PNGEncoder stream.
The PNG encoder supports writing data in the RGB, RGBA, grayscale (gray),
and grayscale + alpha (gray) color spaces. You can also write data in the
indexed color space by first quantizing it using the neuquant
module.
var PNGEncoder = require('png-stream/encoder');
var neuquant = require('neuquant');
fs.createReadStream('in.jpg')
.pipe(new JPEGDecoder)
.pipe(new PNGEncoder)
.pipe(fs.createWriteStream('out.png'));
fs.createReadStream('in.jpg')
.pipe(new JPEGDecoder)
.pipe(new neuquant.Stream)
.pipe(new PNGEncoder)
.pipe(fs.createWriteStream('indexed.png'));
License
MIT