sql >> Database teknologi >  >> NoSQL >> MongoDB

Ændre størrelse på billeder med Nodejs og Imagemagick

Tag et kig på nodemodulet node-imagemagick . Der er følgende eksempel på modulets side for at ændre størrelse og billede og skrive det til 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 ændre denne kode for at gøre følgende...

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 ikke kørt koden ovenfor endnu. Vil prøve at gøre det om lidt, men det burde give dig en idé om, hvordan du asynkront ændrer størrelse og streamer en fil.



  1. apollostack/graphql-server - hvordan man får de felter, der anmodes om i en forespørgsel fra resolver

  2. Spring Mongodb Tidsstempel Tidszone Vildledende

  3. returner værdi fra tilbagekald i node.js og mongoose

  4. MongoDB elemMatch virker ikke forventet