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 模块开发及发布详解分享
Mar 07 NodeJs
Nodejs中自定义事件实例
Jun 20 NodeJs
nodejs中操作mysql数据库示例
Dec 20 NodeJs
Nodejs的express使用教程
Nov 23 NodeJs
Nodejs爬虫进阶教程之异步并发控制
Feb 15 NodeJs
NodeJS远程代码执行
Aug 28 NodeJs
Nodejs高扩展性的模板引擎 functmpl简介
Feb 13 NodeJs
nodejs读写json文件的简单方法(必看)
Mar 09 NodeJs
nodejs搭建本地http服务器教程
Mar 13 NodeJs
nodejs读取并去重excel文件
Apr 22 NodeJs
nodejs实现套接字服务功能详解
Jun 21 NodeJs
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
jQuery html()等方法介绍
2009/11/18 Javascript
ImageZoom 图片放大镜效果(多功能扩展篇)
2010/04/14 Javascript
JavaScript 学习笔记之一jQuery写法图片等比缩放以及预加载
2012/06/28 Javascript
toggle()隐藏问题的解决方法
2014/02/17 Javascript
javascript 闭包详解
2015/07/02 Javascript
使用jQuery操作HTML的table表格的实例解析
2016/03/13 Javascript
使用postMesssage()实现跨域iframe页面间的信息传递方法
2016/03/29 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(二)
2016/05/17 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
2016/08/03 Javascript
详解Vue中使用v-for语句抛出错误的解决方案
2017/05/04 Javascript
AngularJS入门教程一:路由用法初探
2017/05/27 Javascript
详解vue项目构建与实战
2017/06/27 Javascript
JS实现简单获取最近7天和最近3天日期的方法
2018/04/18 Javascript
JavaScript设计模式之工厂模式简单实例教程
2018/07/03 Javascript
详解在React中跨组件分发状态的三种方法
2018/08/09 Javascript
10种JavaScript最常见的错误(小结)
2019/06/21 Javascript
微信小程序数据统计和错误统计的实现方法
2019/06/26 Javascript
layui 实现表格某一列显示图标
2019/09/19 Javascript
[46:55]Ti4 冒泡赛第二轮 LGD vs C9
2014/07/14 DOTA
python执行使用shell命令方法分享
2017/11/08 Python
python之virtualenv的简单使用方法(必看篇)
2017/11/25 Python
使用TFRecord存取多个数据案例
2020/02/17 Python
Numpy一维线性插值函数的用法
2020/04/22 Python
python实现密码验证合格程序的思路详解
2020/06/01 Python
深深扎根运动世界的生活品牌:Tillys
2017/10/30 全球购物
Zooplus葡萄牙:欧洲领先的网上宠物商店
2018/07/01 全球购物
美国最大的船只买卖在线市场:Boat Trader
2018/08/04 全球购物
香港最大的洋酒零售连锁店:屈臣氏酒窖(Watson’s Wine)
2018/12/10 全球购物
如何在Oracle中查看各个表、表空间占用空间的大小
2015/10/31 面试题
汉语言文学毕业生求职信
2013/10/01 职场文书
迟到检讨书大全
2014/01/25 职场文书
高中生物教学反思
2014/02/05 职场文书
邹越感恩父母演讲稿
2014/08/28 职场文书
2015年银行员工工作总结
2015/04/24 职场文书
Java实现斗地主之洗牌发牌
2021/06/14 Java/Android
apache ftpserver搭建ftp服务器
2022/05/20 Servers