2

ユーザーがアバターをアップロードできるようにしていますが、アップロード時にサイズを変更したいと考えています。現在、gm はファイルのサイズを変更する前に、最初にファイルをディスクに保存するようにしているようです。受信リクエストが来たときにサイズを変更することは可能ですか?

このようなもの:

 var readStream = fs.createReadStream(req.files['profile-picture']['path']);

 gm(req.files['profile-picture']['path'], 'img.jpg')
 .write('/path/to/directory/img.jpg', function (err) {
   if (!err) console.log('done');
 });
4

1 に答える 1

3

gm を介してストリームをパイプするだけでよく、ファイルをディスクに保存する必要はありません。gm関数は連鎖可能であるため、いくつかの操作を次々に実行することもできます(私の例では、画像のサイズを変更し、あとがきで中央からトリミングします(したがって、重力関数)

gm(req.files['profile-picture']['path'], 'img.jpg')
  .resize("100^", "100^")
  .gravity('Center')
  .crop(100, 100)
  .stream(function (err, stdout, stderr) {
     // do whatever you want with your output stream (stdout) here
  });
于 2013-06-19T10:00:01.803 に答える