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