sql >> データベース >  >> NoSQL >> MongoDB

NodejsとImagemagickを使用した画像のサイズ変更

    ノードモジュールnode-imagemagick を見てください 。モジュールのページには、サイズを変更して画像を作成し、ファイルに書き込むための次の例があります...

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

    このコードを変更して、次のようにすることができます...

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

    追伸上記のコードはまだ実行していません。すぐに試してみますが、ファイルのサイズを非同期的に変更してストリーミングする方法がわかるはずです。



    1. MongoDB-多対多の関係?

    2. C#のStackExchange/Sentinelを使用したRedisフェイルオーバー

    3. マングース:ObjectIdへのキャストに失敗しました

    4. mongodbjavascriptの更新