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.