使用nodejs gm模块

时间:2018-02-09 08:07:38

标签: node.js imagemagick aws-lambda graphicsmagick gm

我正在尝试在AWS Lambda上运行imageMagick命令并使用gm模块。我一直收到一个错误,没有解码代表这个图像格式`' @ error / construct.c / ReadImage / 544。我相信这个错误表明我的语法对于命令不正确。我尝试了很多方法。我可以在我的Linux系统上的命令行上运行此命令。

这是命令。 (adapted from here

convert test.jpg -crop 120x120+300+300 -colorspace gray -format "%[fx:100*mean]%%" info:

这是我的功能。

gm(imgobj,'test.jpg').command('convert')
    .in('-crop', '120x120+300+300','-colorspace','gray','-format','%[fx:100*mean]%%')
    .out('info:')
    .stream(function (err, stdout, stderr) {
});

gm nodejs module.就在这里。

解决!

gm(imgobj,'test.jpg').command('convert')
    .in('-crop', '120x120+300+300')
    .in('-colorspace', 'gray')
    .toBuffer(function(err, buffer) {
        if(err) throw err;
        gm(buffer, 'test.jpg').identify({bufferStream: true, format:'%[fx:100*mean]'},function(err, data) {
            if(err) throw err;
            console.log('identify',data);
        });
});

文件提到了这个" GOTCHA":

  

使用输入流和任何识别'操作(大小,   格式等),如果你还需要,你必须通过{bufferStream: true}   之后转换(write()或stream())图像(注意:此缓冲区   内存中的readStream!)。

文档说使用:gm().identify(format, callback)这似乎对我没有设置bufferStream: true有用。我认为这是正确的,因为我不需要随后流式传输图像。"但是,对于一般知识,我查看了源代码并找出了如何将{bufferStream: true, format:'%[fx:100*mean]'}格式escape argument传递给attribute value selector

0 个答案:

没有答案