gm图形库使用字体文件写入中文乱码怎么办
发布于 3 年前 作者 jinghaonode 3469 次浏览 来自 问答

已经确认文件为utf-8编码,字符也经过转换 var fs = require(‘fs’) , gm = require(‘gm’); var Iconv = require(‘iconv’).Iconv; var encoding = require(‘encoding’);

var buffer = encoding.convert(“aaa我是中文字”, “GBK”,“UTF-8”);

gm(400, 400, “#ffffff”) .font(“simhei.ttf”, 28) .drawText(20, 50, buffer)

.write('resize.png', function (err) {
    if (!err){
        console.log('done');
    }else{
        console.log("aa")
    }
});
2 回复

已经解决此问题,记录下来: 主要想自己实现node.js生成图形验证码和在图片上签名文字,这就需要用到图形库,最终选型gm。 windows下需要下载安装 GraphicsMagick 同时安装 ImageMagick 网上大部分教程说的是只安装这两个的其中一个即可,实际是在windows两个都要安装,这里的坑是 ImageMagick 在win7中目前只能安装6.9版本,才能正常使用jpeg库, 否则会报错误:Wrong JPEG VERSION: Library is 90, caller expects 80 然后:npm install images 且gm必须调用imagemagick的方式来运行:gm.subClass({imageMagick: true}); 最终代码: var gm = require(‘gm’); var imageMagick = gm.subClass({imageMagick: true}); var _name = “人民的钢铁军队”; imageMagick(300, 300, ‘green’) .font(‘b.ttf’, 30) .drawText(10, 150, ‘验证码文字是神蒙撒工’) .write(‘aaa.jpg’, function (err) { if (!err) { console.log(‘done’); } else { console.log(err.message || “出错了!”); } });

为什么要 npm install images?

回到顶部