• 首页
  • nodejs
  • npm install canvas 各种依赖,各种错误 转投npm install ccap 来生成验证码

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;

看效果:




回到顶部