Redimensionar lote de imagens em node.js

Este prático módulo de redimensionamento não matará seu servidor, graças à fila de assinaturas.
No máximo, ele bifurcará os processos de magia de imagem .cpus (). Length .

var
async = require('async'),
fs
= require('fs'),
im
= require('imagemagick'),
maxworkers
= require('os').cpus().length,
path
= require('path');

module.exports = resize;

function resize(params) {
var queue = async.queue(resizeimg, maxworkers);

fs
.readdir(params.src, function(err, files) {
files
.forEach(function(file) {
queue
.push({
src
: path.join(params.src, '/', file),
dest
: path.join(params.dest, '/', file),
width
: params.width,
height
: params.height
})
});
});
}

function resizeimg(params, cb) {
var imoptions = {
srcPath
: params.src,
dstPath
: params.dest
};
if (params.width !== undefined) imoptions.width = params.width;
if (params.height !== undefined) imoptions.height = params.height
im
.resize(imoptions, cb);
}

Uso:

resize({
src
: '/source/folder',
dest
: '/destination/folder',
width
: 300
});

Você pode fornecer apenas largura ou apenas altura ou ambos.