PNG数据流JS编码器和解码器:png-stream
jopen
10年前
png-stream是一个JavaScript库实现了一个PNG数据流的编码器和解码器。可用于Node和浏览器环境。支持animated PNGs 和正常的normal still PNGs。
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'); // decode a PNG file to RGB pixels fs.createReadStream('in.png') .pipe(new PNGDecoder) .pipe(concat(function(frames) { // frames is an array of frame objects // each one has a `pixels` property containing // the raw RGB pixel data for that frame, as // well as the width, height, etc. }));https://github.com/devongovett/png-stream
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 theindexed
color space by first quantizing it using the neuquant module.
var PNGEncoder = require('png-stream/encoder'); var neuquant = require('neuquant'); // convert a JPEG to a PNG fs.createReadStream('in.jpg') .pipe(new JPEGDecoder) .pipe(new PNGEncoder) .pipe(fs.createWriteStream('out.png')); // write indexed data fs.createReadStream('in.jpg') .pipe(new JPEGDecoder) .pipe(new neuquant.Stream) .pipe(new PNGEncoder) .pipe(fs.createWriteStream('indexed.png'));