web-dev-qa-db-ja.com

GraphicsMagick:toBuffer()ストリームは空のバッファを生成します

次のサンプルコードを使用して、ファイルをバッファーに読み込み、サイズを変更してディスクに書き込みます。

_function processImage(data) {
gm(data, 'test.jpg')
    .resize('300x300')
  .background('white')
  .flatten()
  .setFormat('jpg')
  .toBuffer(function(err, buffer) {
    if (err) {
        throw err;
    } else {
        fs.writeFile('asd.jpg', buffer);
    }
  });
}
_

ただし、これはエラー_Error: Stream yields empty buffer_を生成します。私は遊んでいますが、imageMagickとgraphicsMagickを使用していますが、同じです。

代用する場合
_toBuffer(..._

write('asd.jpg', function(err) ...

実際に適切なファイルを書き込みます。

[〜#〜] edit [〜#〜]この質問の作成中に解決策を見つけました。返信を参照してください

18

setFormat('jpg')
問題を引き起こした。に変更
setFormat('jpeg')が解決しました。

9

私の場合、同じ問題に直面していました:graphicsmagickバイナリをインストールします。

Sudo apt-get install graphicsmagick

12
Edo

ストリームは空のバッファを生成します

これは、graphiksmagickの一般的なエラーを示します。考えられる原因は次のとおりです。

  1. インストールがありません:graphicsmagickまたはimagemagickを正しくインストールしていません。両方をインストールしたことを確認し、
  2. 無効なパラメーター:機能するまですべてのパラメーターを削除します。 jpegの代わりにjpgはよくある間違いです
  3. 間違ったライブラリ graphicmagickを使用しましたが、imagemagickを使用したいですか? (例:webp変換用)。 imageMagick構成を追加します。
const gm = require('gm').subClass({imageMagick: true});

コメントとしてアイデアを追加してください。

8
Simon Fakir

私もこのエラーに遭遇しました。私にとっての解決策は、許容メモリを128Mbから256Mbに増やすことでした。プロセスが成功するには137Mbが必要であることに気づきました。

3