2016-05-09 5 views
1

イメージをs3(amazon)にアップロードする前にイメージのサイズを変更する必要があります。 この機能を試しましたが、機能しません。ノードjsでイメージのサイズを変更するには

ここに画像をアップロードする機能があります。

私のファイル名は次のとおりです。beach_life-normal.jpg

私はこの新しいコードを試みたが、それはまだ動作しません!

は、これは私のコードです:あなたの例で

var AWS = require('aws-sdk'), 
fs = require('fs'); 
var express = require("express"); 
var app = express(); 
var im = require('imagemagick'); 



// For dev purposes only 
AWS.config.update({ accessKeyId: '', secretAccessKey: '' }); 

// Read in the file, convert it to base64, store to S3 
var fileStream = fs.createReadStream('beach_life-normal.jpg'); 
fileStream.on('error', function (err) { 
    if (err) { throw err; } 
}); 
fileStream.on('open', function() { 
    var s3 = new AWS.S3(); 

im.resize({ 
    srcPath: 'beach_life-normal.jpg', 
    dstPath: 'beach_life-normal-small.jpg', 
    width: 256 

}); 

    s3.putObject({ 
    Bucket: 'adinoauploadefile', 
    Key: 'beach_life-normal.jpg', 
    Body: fileStream 
    }, function (err) { 
    if (err) { throw err; } 
    }); 

}); 
+0

私の経験では、 'imagemagick'モジュールはかなり無意味です - それはコマンドラインユーティリティの周りの制限的なラッパーです。直接それを行うより効率的な方法については私の答えを参照してください。 – OrangeDog

答えて

0

あなたは(im.resize)、それのサイズを変更する前に、S3(s3.putObject)に画像を保存しています。 putの前にresize関数を移動します。

また、イメージをサイズ変更関数に渡していません。

im.resize(fileStream, { // pass in the image 
     height:100, 
     width: 200 
}, function(err, stdout, stderr){ 
     if (err) throw err; 
     console.log('resized image to fit within 200x200px'); 
}); 

正しい構文で使用しているライブラリのドキュメントを確認してください。

+0

私はこれを試しましたが、それはまだ仕事をdosent – adi

0

"before"やデータフローのような基本的な概念が欠けているようですが、とにかく試してみます。

ファイルを読み込んでからS3にアップロードするまでに何かを挿入する必要があります。 convertプロセスは良い考えのようです。

var args = ['beach_life-normal.jpg', '-resize', '200x200>', 'JPEG:-'] 
var convert = child_process.spawn('convert', args); 
var s3 = new AWS.S3(); 

s3.putObject({ 
    Bucket: 'adinoauploadefile', 
    Key: 'beach_life-normal.jpg', 
    Body: convert.stdout 
}, 
// ... 

エラー処理などはお任せします。

0

このコードを使用してください。 kittens.jpgの代わりに

im.convert(['kittens.jpg', '-resize', '25x120', 'kittens-small.jpg'], 
function(err, stdout){ 
    if (err) throw err; 
    console.log('stdout:', stdout); 
}); 

、あなたはイメージのか、FILESTREAMを使用することができ、子猫-small.jpgをリサイズした画像名の名前になりますあなたのケースでパスを与えることができます。

関連する問題