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访问ActiveX对象,以操作Access数据库为例。
Dec 15 NodeJs
nodejs之请求路由概述
Jul 05 NodeJs
nodejs爬虫抓取数据之编码问题
Jul 03 NodeJs
Nodejs进阶:核心模块net入门学习与实例讲解
Nov 21 NodeJs
docker中编译nodejs并使用nginx启动
Jun 23 NodeJs
nodejs连接mysql数据库及基本知识点详解
Mar 20 NodeJs
nodejs微信开发之授权登录+获取用户信息
Mar 17 NodeJs
详解nodejs http请求相关总结
Mar 31 NodeJs
NodeJs之word文件生成与解析的实现代码
Apr 01 NodeJs
nodejs实现用户登录路由功能
May 22 NodeJs
nodejs对项目下所有空文件夹创建gitkeep的方法
Aug 02 NodeJs
浅谈JS和Nodejs中的事件驱动
May 05 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
cakephp打印sql语句的方法
2015/02/13 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
2017/03/15 PHP
PHP实现随机生成水印图片功能
2017/03/22 PHP
转换json格式的日期为Javascript对象的函数
2010/07/13 Javascript
Three.js源码阅读笔记(物体是如何组织的)
2012/12/27 Javascript
connect中间件session、cookie的使用方法分享
2014/06/17 Javascript
JavaScript字符串对象fromCharCode方法入门实例(用于把Unicode值转换为字符串)
2014/10/17 Javascript
js实现简单鼠标跟随效果的方法
2015/04/10 Javascript
js实现文本框宽度自适应文本宽度的方法
2015/08/13 Javascript
AngularJS 让人爱不释手的八种功能
2016/03/23 Javascript
AngularJS控制器controller给模型数据赋初始值的方法
2017/01/04 Javascript
bootstrap导航栏、下拉菜单、表单的简单应用实例解析
2017/01/06 Javascript
vue-router 导航钩子的具体使用方法
2017/08/31 Javascript
基于Vuex无法观察到值变化的解决方法
2018/03/01 Javascript
d3绘制基本的柱形图的实现代码
2018/12/12 Javascript
vue如何实现自定义底部菜单栏
2019/07/01 Javascript
使用原生javascript开发计算器实例代码
2021/02/21 Javascript
window下eclipse安装python插件教程
2017/04/24 Python
Python3解决棋盘覆盖问题的方法示例
2017/12/07 Python
让Python更加充分的使用Sqlite3
2017/12/11 Python
Python 经典面试题 21 道【不可错过】
2018/09/21 Python
python2与python3的print及字符串格式化小结
2018/11/30 Python
使用Python快速制作可视化报表的方法
2019/02/03 Python
python图形工具turtle绘制国际象棋棋盘
2019/05/23 Python
深入浅析python3中的unicode和bytes问题
2019/07/03 Python
python opencv调用笔记本摄像头
2019/08/28 Python
tensorflow生成多个tfrecord文件实例
2020/02/17 Python
python利用google翻译方法实例(翻译字幕文件)
2020/09/21 Python
Melijoe时尚童装德国官网:Melijoe德国
2016/09/03 全球购物
李维斯牛仔裤荷兰官方网站:Levi’s NL
2020/08/23 全球购物
教师自我鉴定
2013/12/13 职场文书
办理信用卡工作证明
2014/01/11 职场文书
森马旗舰店双十一营销方案
2014/09/29 职场文书
党校个人总结
2015/03/04 职场文书
2016关于读书活动的心得体会
2016/01/14 职场文书
Java面试题冲刺第十六天--消息队列
2021/08/07 面试题