MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Größenänderung von Bildern mit Nodejs und Imagemagick

Sehen Sie sich das Knotenmodul node-imagemagick an . Es gibt das folgende Beispiel auf der Seite des Moduls, um die Größe und das Bild zu ändern und es in eine Datei zu schreiben ...

var fs = require('fs');
im.resize({
  srcData: fs.readFileSync('kittens.jpg', 'binary'),
  width:   256
}, function(err, stdout, stderr){
  if (err) throw err
  fs.writeFileSync('kittens-resized.jpg', stdout, 'binary');
  console.log('resized kittens.jpg to fit within 256x256px')
});

Sie können diesen Code ändern, um Folgendes zu tun...

var mime = require('mime')   // Get mime type based on file extension. use "npm install mime"
  , fs = require('fs')
  , util = require('util')
  , http = require('http')
  , im = require('imagemagick');

http.createServer(function (req, res) {
    var filePath = 'test.jpg';

    fs.stat(filePath, function (err, stat) {
        if (err) { throw err; }

        fs.readFile(filePath, 'binary', function (err, data) {
            if (err) { throw err; }

            im.resize({
                srcData: data,
                width: 256
            }, function (err, stdout, stderr) {
                if (err) { throw err; }

                res.writeHead(200, {
                    'Content-Type': mime.lookup(filePath),
                    'Content-Length': stat.size
                });

                var readStream = fs.createReadStream(filePath);

                return util.pump(readStream, res);
            });
        });
    });
}).listen(8080);

PS. Habe den obigen Code noch nicht ausgeführt. Ich werde es in Kürze versuchen, aber es sollte Ihnen eine Vorstellung davon geben, wie Sie die Größe einer Datei asynchron ändern und streamen können.