2017-06-25 5 views
0

Ich möchte Bilder skalieren und komprimieren, nachdem sie von Benutzern auf meine Website hochgeladen wurden. Es scheint, als gäbe es einige Optionen für die Größenänderung von Bildern mit Knoten (z. B. https://github.com/lovell/sharp), aber ich möchte auch die Bilder komprimieren, um Speicherplatz zu sparen und schnellere Sendezeiten zu ermöglichen. Gibt es eine Bibliothek oder etwas anderes, das dies möglich macht?Komprimieren von Bildern mit Node.js und Google Cloud Storage

ist hier eine vereinfachte Version meiner aktuellen (Funktion) Route wie es heute steht:

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

Vielleicht [hier] (https://stackoverflow.com/questions/7073784/node-js-image-compression) finden Sie etwas Nützliches :) –

+0

Es scheint, als ob diese Bibliothek mir ermöglicht, von der Befehlszeile zu komprimieren, Ich kann das, ich kann es einfach nicht von meinem Projekt beim Upload machen. Es sei denn, ich missverstehe diese Bibliothek. –

Antwort

1

Aus meiner Erfahrung würde ich imagemin empfehlen. Ich habe es als Gulp-Plugin verwendet, also könntest du 100% in deinem Projekt verwenden. Aber Sie müssen auch die Module von Drittanbietern herunterladen: imagemin-pngquant und imagemin-jpegtran.

Ich hoffe, Sie schätzen es :)

2

Sharp unterstützt Bildkomprimierung. Zum Beispiel:

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

Listet die Optionen für die JPEG schreiben. Sie können eine Reihe von Drehreglern am JPEG-Kompressor einstellen, um den gewünschten Kompromiß zwischen Leistung, Kompression und Qualität zu erzielen. Sie können die Komprimierung im besten Fall um bis zu 30% verbessern, was sich ehrlich gesagt für mich etwas marginal anfühlt. Es ist unwahrscheinlich, dass dies einen signifikanten Unterschied zu Ihrer Seitengröße oder Ihren Ladezeiten darstellt. Im Hinblick auf Speichereinsparungen ist die beste Lösung, Bilder überhaupt nicht zu speichern --- scharf ist schnell genug, dass Sie einfach alle Ihre Bilder bei Bedarf generieren können (die meisten dynamischen Bildgrößenanpassungen verwenden Web-Proxies scharf wie die Engine)). Das ist eine Änderung, die Ihnen wirklich Geld spart und Ihre Seiten besser aussehen lässt.

Verwandte Themen