GraphicsMagick:toBuffer()stream产生空的缓冲区

我正在尝试将文件读入缓冲区,调整其大小,然后使用以下示例代码将其写入磁盘:

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,还是一样的。

如果我replace
toBuffer(...

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

它实际上写了一个适当的文件。

编辑在写这个问题时,我发现解决scheme,请参阅答复

setFormat('jpg')
造成了问题。 将其更改为
setFormat('jpeg')解决了它。

面对同样的问题,在我的情况下:安装graphicsmagick二进制文件。

sudo apt-get install graphicsmagick

stream产生空的缓冲区

这表示graphiksmagick的一般错误。 这是一些可能的原因:

  1. 缺less安装 :您没有正确安装graphicsmagick或imagemagick。 确保你安装了和
  2. 无效的参数 :删除所有参数,直到它工作。 jpg代替jpeg是一个常见的错误
  3. 错误的库你使用了graphicmagick,但想用imagemagick? (例如,用于webp转换)。 添加imageMagickconfiguration:
 const gm = require('gm').subClass({imageMagick: true});