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 Express框架中处理404页面一个方式
May 28 NodeJs
nodejs分页类代码分享
Jun 17 NodeJs
nodejs教程之环境安装及运行
Nov 21 NodeJs
轻松创建nodejs服务器(5):事件处理程序
Dec 18 NodeJs
Nodejs关于gzip/deflate压缩详解
Mar 04 NodeJs
深入nodejs中流(stream)的理解
Mar 27 NodeJs
3分钟快速搭建nodejs本地服务器方法运行测试html/js
Apr 01 NodeJs
nodejs和C语言插入mysql数据库乱码问题的解决方法
Apr 14 NodeJs
深入浅析Nodejs的Http模块
Jun 20 NodeJs
Nodejs之http的表单提交
Jul 07 NodeJs
NodeJs之word文件生成与解析的实现代码
Apr 01 NodeJs
nodejs实现用户登录路由功能
May 22 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
动态生成gif格式的图像要注意?
2006/10/09 PHP
有关PHP性能优化的介绍
2013/06/20 PHP
浅析关于PHP位运算的简单权限设计
2013/06/30 PHP
php中json_encode处理gbk与gb2312中文乱码问题的解决方法
2014/07/10 PHP
PHP开发框架kohana中处理ajax请求的例子
2014/07/14 PHP
PHP生成数组再传给js的方法
2014/08/07 PHP
php基于表单密码验证与HTTP验证用法实例
2015/01/06 PHP
ExtJS Ext.MessageBox.alert()弹出对话框详解
2010/04/02 Javascript
JavaScript高级程序设计 阅读笔记(四) ECMAScript中的类型转换
2012/02/27 Javascript
体验js中splice()的强大(插入、删除或替换数组的元素)
2013/01/16 Javascript
使用 js+正则表达式为关键词添加链接
2014/11/11 Javascript
IE中鼠标经过option触发mouseout的解决方法
2015/01/29 Javascript
深入探讨javascript函数式编程
2015/10/11 Javascript
JavaScript事件代理和委托详解
2016/04/08 Javascript
tablesorter.js表格排序使用方法(支持中文排序)
2017/02/10 Javascript
原生JS实现层叠轮播图
2017/05/17 Javascript
ui-router中使用ocLazyLoad和resolve的具体方法
2017/10/18 Javascript
layui动态渲染生成左侧3级菜单的方法(根据后台返回数据)
2019/09/23 Javascript
vue 验证码界面实现点击后标灰并设置div按钮不可点击状态
2019/10/28 Javascript
ES6中new Function()语法及应用实例分析
2020/02/19 Javascript
JS实现拖拽元素时与另一元素碰撞检测
2020/08/27 Javascript
谈谈JavaScript中的函数
2020/09/08 Javascript
将Python中的数据存储到系统本地的简单方法
2015/04/11 Python
Python pass详细介绍及实例代码
2016/11/24 Python
Python实现遍历目录的方法【测试可用】
2017/03/22 Python
对Python中DataFrame按照行遍历的方法
2018/04/08 Python
对python实现二维函数高次拟合的示例详解
2018/12/29 Python
python为QT程序添加图标的方法详解
2020/03/09 Python
Python中zipfile压缩文件模块的基本使用教程
2020/06/14 Python
python3实现语音转文字(语音识别)和文字转语音(语音合成)
2020/10/14 Python
Python之字符串的遍历的4种方式
2020/12/08 Python
纯CSS实现的大小渐变、渐远效果
2014/04/15 HTML / CSS
使用CSS3来匹配横屏竖屏的简单方法
2015/08/04 HTML / CSS
html5 横向滑动导航栏的方法示例
2020/05/08 HTML / CSS
德国富尔达运动鞋店:43einhalb
2020/12/25 全球购物
雾霾停课通知
2015/04/24 职场文书