GraphicsMagick:toBuffer()Stream产生空缓冲区

时间:2016-02-16 12:56:30

标签: node.js imagemagick graphicsmagick

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

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) ...

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

编辑在撰写此问题时,我找到了解决方案,请参阅回复

3 个答案:

答案 0 :(得分:12)

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

sudo apt-get install graphicsmagick

答案 1 :(得分:9)

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

答案 2 :(得分:2)

我也偶然发现了这个错误。对我来说,解决方案是将允许的内存从128Mb增加到256Mb。我注意到这个过程需要137Mb才能成功。