解决NodeJs gm模块报错{ [Error: Command failed: aaЧaaaa ] code: 4, signal: null }

问题:


我在Window 8 系统上 Nodejs平台中使用gm模块处理图片时,如果不安装、安装imageGagick.exe版本不对或安装选项不对时都会报类似于“{ [Error: Command failed: aaЧaaaa ] code: 4, signal: null }”的错。


我这里试了mageMagick-6.2.7-6-Q16-windows-dll.exe和ImageMagick-7.0.0-0-Q8-x64-dll.exe、ImageMagick-7.0.0-0-Q8-x64-static.exe、ImageMagick-7.0.0-0-Q16-x64-dll.exe

4个版本的情况。


注意:后面三个7.0版本安装时必须勾选"Install legacy utilities(e.g. convert)"选项,否则依然会报错,而ImageMagick-6.2.7-6-Q16-windows-dll.exe默认安装即可


另外,ImageMagick-6.9.2-8-Q16-x64-static.exe安装时没有"Install legacy utilities(e.g. convert)"选项,安装完后会报错。


大家可以试试其他版本

解决NodeJs gm模块报错{ [Error: Command failed: aaЧaaaa ] code: 4, signal: null }_第1张图片


下面介绍gm模块使用


1、正确在电脑上安装imageMagick组件

2、npm install gm

3、var gm=require('gm').subClass({ imageMagick : true });

4、压缩原图并生成压缩后的新图

 gm('public/images/chat/abc.jpg')
        .resize(240, 240,'!')  //压缩为240*240     
        .write('public/images/chat/abc_new.jpg', function (err) {
            if (!err)
                console.log('done');
            else
            {
                console.log(err);
            }

        });

5、压缩原图并返回文件流输出到客户端

 gm1('public/images/chat/abc.jpg')
        .resize(240, 240,'!')
        .toBuffer(function(err,data){
            if(!err)
            {
                res.set('Content-Type','image/png');
                res.send(data);
            }
            else
            {
                console.log(err);
            }}
        )
       

你可能感兴趣的:(Node.Js)