Nodejs中使用captchapng模块生成图片验证码


Posted in NodeJs onMay 18, 2017

Nodejs项目,在做图片验证码的时候遇到了难题。Nodejs没有图片库,以后会有,但是现在没有。

网络上搜索一圈,有几个解决方案:

1、采用第三方验证码程序,有的时候,项目可能不允许;

2、使用Java或者PHP生成图片,Nodejs调用,中间采用Redies共享;

这两种方式都不太理想,好在终于找到了可以支持Nodejs图片验证码的一个库,虽然只支持数字,但是也还不错。原理是使用Base64的图片编码方式。

这个库的Gighub地址是:https://github.com/GeorgeChan/captchapng

使用方法这个主页上都有,这里还是补充一下:

1、在Node项目的package.json中增加captchapng模块;

2、使用如下代码:

/**

 * 图片验证码

 * @param req

 * @param res

 * @param next

 */

function randomcodePngController(req , res , next){

  var code = '0123456789';

  var length = 4;

  var randomcode = '';

  for (var i = 0; i < length; i++) {

    randomcode += code[parseInt(Math.random() * 1000) % code.length];

  }

  // 保存到session

  if (null == req.session[sessionConstant.login]) {

    req.session[sessionConstant.login] = {};

  }

  req.session[sessionConstant.login][sessionConstant.randomcode] = randomcode;

  // 输出图片

   var p = new captchapng(80,30,parseInt(randomcode)); // width,height,numeric captcha

  p.color(255, 255, 255, 0); // First color: background (red, green, blue, alpha)

  p.color(80, 80, 80, 255); // Second color: paint (red, green, blue, alpha)

  var img = p.getBase64();

  var imgbase64 = new Buffer(img,'base64');

  res.writeHead(200, {

    'Content-Type': 'image/png'

  });

  res.end(imgbase64);

}

3、给这个controller写一个路径,页面就可以直接在img标签里面增加src属性了。

这样就搞定了Nodejs的图片验证码,希望Nodejs尽快补充缺乏的库。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
nodejs教程之入门
Nov 21 NodeJs
nodejs中操作mysql数据库示例
Dec 20 NodeJs
初识NodeJS服务端开发入门(Express+MySQL)
Apr 07 NodeJs
Nodejs进阶:express+session实现简易登录身份认证
Apr 24 NodeJs
详解使用nodeJs安装Vue-cli
May 17 NodeJs
NodeJS自定义模块写法(详解)
Jun 27 NodeJs
nodejs 最新版安装npm 的使用详解
Jan 18 NodeJs
基于nodejs res.end和res.send的区别
May 14 NodeJs
nodejs基础之多进程实例详解
Dec 27 NodeJs
nodejs+koa2 实现模仿springMVC框架
Oct 21 NodeJs
NodeJS和浏览器中this关键字的不同之处
Mar 03 NodeJs
详解NodeJS模块化
Jun 15 NodeJs
详解使用nodeJs安装Vue-cli
May 17 #NodeJs
NodeJS创建最简单的HTTP服务器
May 15 #NodeJs
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
May 13 #NodeJs
配置nodejs环境的方法
May 13 #NodeJs
nodejs multer实现文件上传与下载
May 10 #NodeJs
nodejs处理图片的中间件node-images详解
May 08 #NodeJs
使用nodejs爬取前程无忧前端技能排行
May 06 #NodeJs
You might like
php iconv() : Detected an illegal character in input string
2010/12/05 PHP
php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
2011/07/03 PHP
Yii入门教程之目录结构、入口文件及路由设置
2014/11/25 PHP
用php守护另一个php进程的例子
2015/02/13 PHP
PHP实现简单汉字验证码
2015/07/28 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
js中的window.open返回object的错误的解决方法
2009/08/15 Javascript
Jquery Ajax学习实例6 向WebService发出请求,返回DataSet(XML) 异步调用
2010/03/18 Javascript
JQueryEasyUI datagrid框架的进阶使用
2013/04/08 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
2014/03/10 Javascript
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
JavaScript设计模式之工厂方法模式介绍
2014/12/28 Javascript
深入分析原生JavaScript事件
2014/12/29 Javascript
js鼠标滑过图片震动特效的方法
2015/02/17 Javascript
jQuery实现浮动层随浏览器滚动条滚动的方法
2015/09/22 Javascript
js实现点击获取验证码倒计时效果
2021/01/28 Javascript
jQuery实现的简单排序功能示例【冒泡排序】
2017/01/13 Javascript
js代码延迟一定时间后执行一个函数的实例
2017/02/15 Javascript
微信小程序之MaterialDesign--input组件详解
2017/02/15 Javascript
html+javascript+bootstrap实现层级多选框全层全选和多选功能
2017/03/09 Javascript
bootstrap suggest搜索建议插件使用详解
2017/03/25 Javascript
微信小程序项目实践之九宫格实现及item跳转功能
2018/07/19 Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
2019/08/29 Javascript
[01:12]DOTA2次级职业联赛 - Newbee.Y 战队宣传片
2014/12/01 DOTA
Python获取DLL和EXE文件版本号的方法
2015/03/10 Python
Python中List.count()方法的使用教程
2015/05/20 Python
python 随机森林算法及其优化详解
2019/07/11 Python
超简单的Python HTTP服务
2019/07/22 Python
Pytest mark使用实例及原理解析
2020/02/22 Python
Python unittest 自动识别并执行测试用例方式
2020/03/09 Python
长辈证婚人证婚词
2014/01/09 职场文书
文案策划求职信
2014/03/18 职场文书
食品销售计划书
2014/04/26 职场文书
2015年度学校卫生工作总结
2015/05/12 职场文书
mysql5.6主从搭建以及不同步问题详解
2021/12/04 MySQL
win10忘记pin密码登录不了怎么办?win10忘记pin密码登不进去的解决方法
2022/07/07 数码科技