Node.js GraphicsMagick:toBuffer()流产生空缓冲区
我尝试将文件读入缓冲区,调整其大小,然后使用以下示例代码将其写入磁盘:Node.js GraphicsMagick:toBuffer()流产生空缓冲区,node.js,imagemagick,graphicsmagick,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 {
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);
}
});
}
然而,这会产生一个错误:流产生空缓冲区。我玩过,用过imageMagick和graphicsMagick,还是一样
如果我替换toBuffer(…
与
write('asd.jpg',函数(err).
它实际上写了一个正确的文件
编辑在编写此问题时,我找到了解决方案,请参见回复setFormat('jpg')
导致问题。将其更改为
setFormat('jpeg')
解决了这个问题。在我的例子中面临着同样的问题:安装graphicsmagick二进制文件
sudo-apt-get-install-graphicsmagick
流产生空缓冲区
这表示graphiksmagick的一般错误。
以下是一些可能的原因:
const gm=require('gm')。子类({imageMagick:true});
我也偶然发现了这个错误。对我来说,解决方案是将允许的内存从128Mb增加到256Mb。我注意到要成功,这个过程需要137Mb。这里也一样。brew在Mac上安装graphicsmagick
(如果你已经安装了自制软件)也可以将扩展名添加为参数。toBuffer('jpeg',(错误,缓冲区)=>为了避免setFormat行。丢失的安装点为我解决了这一问题-我没有阅读自述文件,也没有意识到还必须单独安装GraphicsMagick。谢谢!你是如何做到的?这是节点进程还是imagemagick进程?这是lambda进程本身。