gm(300,300,’green’) .font(‘stliti’)//中文字体已写在配置文件中 .fontSize(50) .drawText(10, 150, ‘ABC验证码’) .write("D:\node\gmtest\a1.jpg",function(err) { if (err) console.log(err); });
windows系统下 问题解决了。再安装ImageMagick,说一下过程避免后人掉坑。
First install either GraphicsMagick or ImageMagick. Then: npm install gm
官网说GraphicsMagick 或 ImageMagick 都可以, 刚开始安装了GraphicsMagick ,网上都说这个好点是从ImageMagick 分离出来的。 var gm = require(‘gm’); gm().xxx().xxx() 这样基本上能实现很多功能了,如(剪裁、缩放、旋转等等),但是调用子类报错var imageMagick = gm.subClass({ imageMagick: true });应该是没装ImageMagick ,而且涉及到中文输出的一概乱码,网上翻遍了,试了很多,都不行。 今天想着安装ImageMagick 碰碰运气,还真就行了。但得用子类方法。 原先: var gm = require(‘gm’); gm(300,300,’green’) .font(‘stliti’)//中文字体已写在配置文件中 .fontSize(50) .drawText(10, 150, ‘ABC验证码’) .write("D:\node\gmtest\a1.jpg",function(err) { if (err) console.log(err); }); 这样就算安装了ImageMagick 也是乱码。
改后: var gm = require(‘gm’); var imageMagick = gm.subClass({ imageMagick: true }); imageMagick (300,300,’green’) .font(‘stliti’)//中文字体已写在配置文件中 .fontSize(50) .drawText(10, 150, ‘ABC验证码’) .write("D:\node\gmtest\a1.jpg",function(err) { if (err) console.log(err); }); 这样就能正常输出中文了。
其实,可以只安装ImageMagick 就行了的。但gm().xx().xx()的这些方法就不能用了,要通过子类调用var imageMagick = gm.subClass({ imageMagick: true });
以上就是整个问题的过程。