3

https://github.com/aheckmann/gmを使用して画像のサイズを変更しています。

var fs = require('fs');
var gm = require('gm');

var input = __dirname   + '/input.jpg';
var output = __dirname + '/output.jpg';

gm(input)
  .resize(350)
  .stream( function(err, stdout, stderr) {

    var writeStream = fs.createWriteStream( output, { encoding: 'base64' } );

    var i = '';

    stdout.on( 'data', function(data){

      i += data.toString('base64');

    });

    stdout.on('end', function(){

      writeStream.write( new Buffer(i, 'base64') );
      writeStream.end();

    });

  } );

問題は、イメージ全体を書き込んでいないことです。

半分ラクダ

4

4 に答える 4

3

データを取得したら、出力ストリームに直接書き込みませんか?

var fs = require('fs');
var gm = require('gm');

var input = __dirname + '/input.jpg';
var output = __dirname + '/output.jpg';

gm(input).resize(350).stream(function(err, stdout, stderr) {

  var writeStream = fs.createWriteStream(output, {
    encoding: 'base64'
  });

  stdout.pipe(writeStream);

});
于 2012-04-28T01:07:43.300 に答える
2

imagemagickとても便利でシンプルだと思いました。私も試してみgraphicsmagickましたが、うまくいきませんでした。

imagemagick以下のコマンドでインストールできます。

npm install imagemagick

imagemagick以下は、https : //github.com/rsms/node-imagemagickにあるサンプル コードとドキュメントです。

var im = require('imagemagick');

im.resize({
  srcPath: 'kittens.jpg',
  dstPath: 'kittens-small.jpg',
  width: 50,
  height: 50
}, function(err, stdout, stderr){
  if (err) throw err;
  console.log('resized kittens.jpg to fit within 256x256px');
});
于 2012-12-16T07:31:29.010 に答える