2017-06-25 2 views
0

Je souhaite redimensionner et compresser des images après les avoir mises en ligne sur mon site. Il semble qu'il y ait quelques options pour redimensionner des images avec un nœud (par exemple https://github.com/lovell/sharp), mais je voudrais également compresser les images afin d'économiser de l'espace disque et permettre des temps de service plus rapides. Y a-t-il une bibliothèque ou autre chose qui rend cela possible?Compression d'images avec Node.js et Google Cloud Storage

Voici une version simplifiée de mon itinéraire actuel (fonctionnement) tel qu'il est aujourd'hui:

var router = require('express').Router(); 
var bucket = require('../modules/google-storage-bucket'); 
var Multer = require('multer'); 
var multer = Multer({ 
    storage: Multer.memoryStorage(), 
    limits: { 
    fileSize: 5 * 1024 * 1024 // no larger than 5mb 
    } 
}); 

// Process the file upload and upload to Google Cloud Storage. 
router.post('/', multer.single('file'), (req, res) => { 

    // rejecting if no file is uploaded 
    if (!req.file) { 
    res.status(400).send('No file uploaded.'); 
    return; 
    } 

    // Create a new blob in the bucket and upload the file data. 
    var blob = bucket.file('fileName'); 
    var blobStream = blob.createWriteStream(); 

    blobStream.on('error', (err) => { 
    console.log('error', err); 
    res.send(500); 
    }); 

    blobStream.on('finish',() => { 
    console.log('everything worked!') 
    }); 

    blobStream.end(req.file.buffer); 
}); 

module.exports = router; 
+0

Peut-être [ici] (https://stackoverflow.com/questions/7073784/node-js-image-compression) vous trouverez quelque chose d'utile :) –

+0

Il me semble que cette bibliothèque me permet de compresser à partir de la ligne de commande, Je peux le faire, je ne peux pas le faire à partir de mon projet sur le téléchargement. À moins que je ne comprenne mal cette bibliothèque. –

Répondre

1

De mon expérience, je recommande imagemin. Je l'ai utilisé comme un plugin Gulp, de sorte que vous pouvez utiliser à 100% dans votre projet. Mais vous devez également télécharger les modules tiers: imagemin-pngquant et imagemin-jpegtran.

J'espère que vous l'apprécierez :)

2

Sharp prend en charge la compression d'image. Par exemple:

http://sharp.dimens.io/en/stable/api-output/#jpeg

répertorie les options pour écrire JPEG. Vous pouvez ajuster une gamme de boutons sur le compresseur JPEG pour l'accorder pour le compromis performance/compression/qualité que vous voulez. Vous pouvez améliorer la compression d'environ 30% dans le meilleur des cas, ce qui me semble un peu marginal. Il est peu probable que cela change la taille de votre page ou vos temps de chargement. En termes d'économies de stockage, la meilleure solution est de ne pas stocker d'images du tout --- sharp est assez rapide pour que vous puissiez simplement générer toutes vos images à la demande (les proxies web de redimensionnement d'image les plus dynamiques utilisent comme le moteur). C'est un changement qui vous permettra d'économiser de l'argent et de rendre vos pages plus belles.