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;
看效果: