nodejs使用ccap模块生成图片验证码

发布时间:2019-11-23编辑:佚名阅读(1614)

准备工作

这个库依赖python2.7.X和node-gyp,请先安装

1、Python

注意:安装的时候勾选添加到环境变量,如果有其它版本Python,特别是3.X版本,要卸载掉,否则会导致ccap安装失败,可以安装好ccap后再安装其它版本Python。

2、node-gyp安装

全局安装node-gyp。执行

npm install -g node-gyp

3、安装ccap(需要C++编译环境

npm install ccap

生成的图片示例:

var ccap = require('ccap');
var captcha1 = ccap();
var captcha2 = ccap(width, height, offset);
var captcha3 = ccap({
  width:256,//set width,default is 256
  height:60,//set height,default is 60
  offset:40,//set text spacing,default is 40
  quality:100,//set pic quality,default is 50
  generate:function(){//Custom the function to generate captcha text
     //generate captcha text here
     return text;//return the captcha text
  }
});

可以通过上述代码实例化一个ccap类。1、不传任何参数,全部使用默认的参数进行生成验证码2、只传递宽,高,偏移进行实例化,调整图片的大小,和图片中文字的间隔3、传递一个对象,除了宽,高和偏移,还传递了图片质量以及生成随机数的方法,ccap模块会根据自定义函数return的字符串作为图片验证码的内容,默认是0-9,A-Z的6位随即字符串。

理论上可以生产很多不同的ccap的实例,而且他们之间互相没有影响,所以即使是通过cluster开启多进程的node同时生产验证码也不存在互相锁止的影响。

对于图片质量只对jpeg图片有效,如果没有安装任何jpeg的lib库的话,只能使用bmp未压缩图形了,体积比较大,但是生成速度比较快。

4、使用方法,get():

var ccap = require('ccap');
var captcha = ccap();
var ary = captcha.get();//ary[0] is captcha's text,ary[1] is captcha picture buffer.
var text = ary[0];
var buffer = ary[1];

实例化ccap类之后,会得到captcha对象,这个对象只有一个对外方法,get(),这个方法每次调用都会返回验证码buffer和对应的text字符串内容,保存在数组里,类似这样的结构:

["captcha text","picture buffer"]

5、一个简单的web例子:

var http = require('http');
var ccap = require('ccap')();//Instantiated ccap class 
http.createServer(function (request, response) {
  if(request.url == '/favicon.ico')return response.end('');//Intercept request favicon.ico
  var ary = ccap.get();
  var txt = ary[0];
  var buf = ary[1];
  response.end(buf);
  console.log(txt);
}).listen(8124);
console.log('Server running at http://127.0.0.1:8124/');

上面这个例子会将验证码返回给客户端,并且把对应的验证码的文字输出出来,同时拦截了favicon.ico的请求。

  关键字:nodejsccap模块图片验证码


鼓掌

0

正能量

0

0

呵呵

1


评论区