A streaming image resizer
A streaming image resizer, for Node and the browser. Uses pica to perform high quality image resizing, and supports options to resize proportionally, stretch, fit, etc. Handles multi-frame images (e.g. animated GIFs) properly as well, thanks to pixel-stream.
npm install resizer-stream
Here is an example that resizes a JPEG (check out the jpg-stream module for a streaming JPEG decoder and encoder).
var resize = require('resizer-stream');
// scale the image proportionally to fit within a 300x300 square
fs.createReadStream('large.jpg')
.pipe(new JPEGDecoder)
.pipe(resize({ width: 300, height: 300, fit: true }))
.pipe(new JPEGEncoder)
.pipe(fs.createWriteStream('resized.jpg'));
There are many different combinations of options that resizer-stream understands.
width
provided: image is scaled proportionally to widthheight
provided: image is scaled proportionally to heightwidth
and height
provided: image is stretched to fill the provided dimensionswidth
, height
, and fit: true
provided: image is scaled proportionally to fit inside the provided dimensionsscale
factor provided: image is scaled proportionally by the provided scale factorallowUpscale
: by default, images are not scaled above their intrinsic size. To allow upscaling, set this option to true
.MIT