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 实现模拟form表单上传文件
Jul 14 NodeJs
Nodejs实现的一个静态服务器实例
Dec 06 NodeJs
nodejs中操作mysql数据库示例
Dec 20 NodeJs
nodejs实现HTTPS发起POST请求
Apr 23 NodeJs
ajax +NodeJS 实现图片上传实例
Jun 06 NodeJs
详解使用PM2管理nodejs进程
Oct 24 NodeJs
nodejs操作mongodb的填删改查模块的制作及引入实例
Jan 02 NodeJs
Nodejs异步回调之异常处理实例分析
Jun 22 NodeJs
nodejs通过钉钉群机器人推送消息的实现代码
May 05 NodeJs
在NodeJs中使用node-schedule增加定时器任务的方法
Jun 08 NodeJs
nodejs各种姿势断点调试的方法
Jun 18 NodeJs
浅谈Node的内存泄露问题
May 06 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
我的论坛源代码(九)
2006/10/09 PHP
用PHP+java实现自动新闻滚动窗口
2006/10/09 PHP
Windows 下的 PHP-PEAR 安装方法
2010/11/20 PHP
jQuery(非HTML5)可编辑表格实现代码
2012/12/11 Javascript
杨氏矩阵查找的JS代码
2013/03/21 Javascript
用javascript判断IE版本号简单实用且向后兼容
2013/09/11 Javascript
Javascript模仿淘宝信用评价实例(附源码)
2015/11/26 Javascript
手机端 HTML5使用photoswipe.js仿微信朋友圈图片放大效果
2016/08/25 Javascript
easyui form validate总是返回false的原因及解决方法
2016/11/07 Javascript
jQuery插件FusionCharts绘制2D环饼图效果示例【附demo源码】
2017/04/10 jQuery
jQuery操作css样式
2017/05/15 jQuery
javascript 缓冲运动框架的实现
2017/09/29 Javascript
Vue2.0 给Tab标签页和页面切换过渡添加样式的方法
2018/03/13 Javascript
vue项目中公用footer组件底部位置的适配问题
2018/05/10 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
2018/08/04 Javascript
element-ui 表格数据时间格式化的方法
2018/08/24 Javascript
深入理解 Koa 框架中间件原理
2018/10/18 Javascript
JS数组属性去重并校验重复数据
2020/01/10 Javascript
pyramid配置session的方法教程
2013/11/27 Python
python 默认参数问题的陷阱
2016/02/29 Python
Django中的Signal代码详解
2018/02/05 Python
pytorch GAN生成对抗网络实例
2020/01/10 Python
python对Excel的读取的示例代码
2020/02/14 Python
详解修改Anaconda中的Jupyter Notebook默认工作路径的三种方式
2021/01/24 Python
pycharm 使用anaconda为默认环境的操作
2021/02/05 Python
详解CSS 3 中的 calc() 方法
2018/01/12 HTML / CSS
DKNY品牌官网:纽约大都会时尚风格
2016/10/20 全球购物
英国定做窗帘和纺织品面料一站式商店:Dekoria
2018/08/29 全球购物
贪睡宠物用品:Snoozer Pet Products
2020/02/04 全球购物
工商学院毕业生自荐信
2013/11/12 职场文书
高中的自我鉴定
2013/12/16 职场文书
小学语文教学反思
2014/02/10 职场文书
大学教师师德师风演讲稿
2014/08/22 职场文书
实习证明格式范文
2014/10/14 职场文书
仓管员岗位职责范本
2015/04/01 职场文书
ant design vue的form表单取值方法
2022/06/01 Vue.js