npm install canvas 各种依赖,各种错误 转投npm install ccap 来生成验证码
--> -->
canvas 模块是npm提供的一个第三方包,国内环境安装慢的话请给npm换国内源,点击查看,用来生成图片.在本博客的应用场景是生成验证码.
前端时间阿里云上使用 ubuntu 系统,本地mac OS ,安装 canvas 及各种依赖貌似很顺利,最近从ubuntu 换到了 centOS 后,进过几小时的挣扎,canvas 环境还是没有安装成功!
他的依赖很多,最好按照官方wiki提供的文档来安装.
wiki文档地址: https://github.com/LearnBoost/node-canvas/wiki
--> -->
wiki 提供的安装向导包括2部分,红框内的为不同操作系统需要安装的依赖. 红框下面是云环境需要安装的依赖.
其实我在博客中只是想生成一个验证码,涉及到的功能很小,于是网上查找替换方案,就这样发现了ccap ,眼前一亮的感觉!
ccap 模块是基于CImg图形库的封装.
CImg是一个跨平台的C++的图像处理库,提供了加载、处理、显示、保存等一系列功能,最牛逼的是整个图形库就一个CImg.h这个文件,所以非常的便携绿色环保,带到哪里都可以进行编译使用,不用安装一大推依赖,让你节省很多有关第三方依赖环境配置安装的时间.
用来生成个验证码或图片剪切之类的操作实在是爽,上代码:
var ccap = require('ccap');
//下面是生成图片的方法
var captcha1 = ccap();
var captcha3 = ccap({
width:100,//set width,default is 256
height:30,//set height,default is 60
offset:20,//set text spacing,default is 40
quality:50,//set pic quality,default is 50
generate:function(){
var items = 'abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPRSTUVWXYZ23456789'.split('');
var vcode='';
for (var i = 0; i < 4; i++) {
var rnd = Math.random();
var item = Math.round(rnd * (items.length - 1));
vcode+=item;
}
return vcode;
}
});
//下面是验证码路由
function getImg(req, res) {
//调用生成验证码的方法
var captcha = ccap();
var ary = captcha.get();//返回值是一个数组:ary[0] 是生成验证码图片里面的文字,ary[1] 是存储验证码图片流
var text = ary[0];//文字
var buffer = ary[1];//二进制流
req.session.verifycode=text.toLowerCase();//写入session
//把验证码流response到客户端
res.writeHead(200, { 'Content-Type': 'image/png', 'Content-Length': buffer.length });
res.end(buffer);
}
exports.getImg = getImg;
看效果:
--> -->