sql >> Database >  >> NoSQL >> MongoDB

Het formaat van afbeeldingen wijzigen met Nodejs en Imagemagick

Bekijk de node-module node-imagemagick . Er is het volgende voorbeeld op de pagina van de module om het formaat en de afbeelding te wijzigen en naar een bestand te schrijven...

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

U kunt deze code wijzigen om het volgende te doen...

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. Heb de bovenstaande code nog niet uitgevoerd. Zal het binnenkort proberen, maar het zou je een idee moeten geven van hoe je het formaat van een bestand asynchroon kunt wijzigen en streamen.



  1. Draft.js - Kan geen gegevens ophalen uit de database. Cross-origin-fout

  2. Verwijder duplicaat in MongoDB

  3. Gebruik resultaat van mongodb in shellscript

  4. Hoe null-waarden te behouden aan het einde van het sorteren in Mongoose?