sql >> Databasteknik >  >> NoSQL >> MongoDB

Ändra storlek på bilder med Nodejs och Imagemagick

Ta en titt på nodmodulen node-imagemagick . Det finns följande exempel på modulens sida för att ändra storlek och bild och skriva det till en fil...

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')
});

Du kan ändra den här koden för att göra följande...

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. Har inte kört koden ovan än. Ska försöka göra det inom kort, men det borde ge dig en uppfattning om hur du asynkront ändrar storlek och streamar en fil.



  1. Android/MongoDB:NoClassDefFoundError:com.mongodb.DBPortPool

  2. MongoDB:hur man hittar dokument som ignorerar skiftlägeskänslighet, accenter och procent som logik (%)

  3. Kan inte importera MongoClient

  4. Returnera det sista sanna värdet för varje grupp