¿Cómo optimizar multiples imágenes para la web rápidamente?
BLOG
scripts
nodejs
js
optimizar imagenes
batch
Esta es la forma de optimizar rápidamente muchas imágenes
Para mi lo que mejor me funciona para procesar muchas imagenes en batch de forma comoda es un simple script. Basta con copiar este script en el directorio
El script depende de 3 librerias, que podemos instalar con yarn o npm
yarn add path
yarn add fs
yarn add jimp
Todo lo que hace falta es copiar este script dentro de un directorio de imágenes y lanzarlo.
node script.js
El script procesara todas las imagenes del directorio
- cambiando formato a jpg
- redimensionando a altura 600px
- calidad 70
- normalizando los nombres
SCRIPT:
const path = require('path');
const fs = require('fs');
const Jimp = require('jimp');
const directoryPath = path.join(__dirname, '.');
fs.readdir(directoryPath, (err, files) => {
if (err) {
return console.log('Unable to scan directory: ' + err);
}
files.forEach(file => {
if (!file.match(/.*(jpg|jpeg|png)$/)) {
return console.log('SKIPPING: ', file);
}
console.log('PROCESSING: ', file);
const finalFile = file
.replace(/ /g, '-')
.replace(/\.png$/, '.jpg')
.toLowerCase();
Jimp.read(file)
.then(f => {
return (
f
.resize(Jimp.AUTO, 600) // resize
.quality(70) // set JPEG quality
// .greyscale() // set greyscale
.write(finalFile) // save
);
})
.then(() => console.log('READY => ', finalFile))
.catch(err => console.error(err));
});
});
Feliz optimización de imágenes! ✨