我正在尝试将文件读入缓冲区,调整大小,然后使用以下示例代码将其写入磁盘:
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) ...
它实际上写了一个合适的文件。
编辑在撰写此问题时,我找到了解决方案,请参阅回复
答案 0 :(得分:12)
在我的情况下面临同样的问题:安装graphicsmagick二进制文件。
sudo apt-get install graphicsmagick
答案 1 :(得分:9)
setFormat('jpg')
造成了这些问题。将其更改为
setFormat('jpeg')
解决了它。
答案 2 :(得分:2)
我也偶然发现了这个错误。对我来说,解决方案是将允许的内存从128Mb增加到256Mb。我注意到这个过程需要137Mb才能成功。