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中SSL服务的性能
Jul 15 NodeJs
nodejs教程之入门
Nov 21 NodeJs
nodejs实现bigpipe异步加载页面方案
Jan 26 NodeJs
NodeJS处理Express中异步错误
Mar 26 NodeJs
详解nodejs微信公众号开发——1.接入微信公众号
Apr 10 NodeJs
详解nodejs微信jssdk后端接口
May 25 NodeJs
NodeJS实现图片上传代码(Express)
Jun 30 NodeJs
nodejs async异步常用函数总结(推荐)
Nov 17 NodeJs
详解Nodejs内存治理
May 13 NodeJs
nodejs require js文件入口,在package.json中指定默认入口main方法
Oct 10 NodeJs
Nodejs使用archiver-zip-encrypted库加密压缩文件时报错(解决方案)
Nov 18 NodeJs
NodeJS开发人员常见五个错误理解
Oct 14 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
espresso double下 咖啡粉超细时 饼压力对咖啡的影响
2021/03/03 冲泡冲煮
php 错误处理经验分享
2011/10/11 PHP
PHP中几种常见的超时处理全面总结
2012/09/11 PHP
Yii入门教程之Yii安装及hello world
2014/11/25 PHP
浅析Yii2缓存的使用
2016/05/10 PHP
php设计模式之职责链模式定义与用法经典示例
2019/09/19 PHP
PHP实现限制域名访问的实现代码(本地验证)
2020/09/13 PHP
Tab页界面,用jQuery及Ajax技术实现
2009/09/21 Javascript
JavaScript中的几个关键概念的理解-原型链的构建
2011/05/12 Javascript
Javascript中查找不以XX字符结尾的单词示例代码
2013/10/15 Javascript
javascript解析json实例详解
2014/11/05 Javascript
JavaScript简介
2015/02/15 Javascript
JQuery判断radio(单选框)是否选中和获取选中值方法总结
2015/04/15 Javascript
js兼容pc端浏览器并有多种弹出小提示的手机端浮层控件实例
2015/04/29 Javascript
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
2016/02/15 Javascript
基于JS实现导航条之调用网页助手小精灵的方法
2016/06/17 Javascript
输入法的回车与消息发送快捷键回车的冲突解决方法
2016/08/09 Javascript
Bootstrap基本样式学习笔记之图片(6)
2016/12/07 Javascript
angularjs实现下拉列表的选中事件示例
2017/03/03 Javascript
vue项目中使用百度地图的方法
2018/06/08 Javascript
Python实现把json格式转换成文本或sql文件
2015/07/10 Python
教你学会使用Python正则表达式
2017/09/07 Python
Python3操作SQL Server数据库(实例讲解)
2017/10/21 Python
python装饰器实例大详解
2017/10/25 Python
浅谈pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
2018/04/10 Python
Python计算公交发车时间的完整代码
2020/02/12 Python
基于opencv的selenium滑动验证码的实现
2020/07/24 Python
HTML5之SVG 2D入门10—滤镜的定义及使用
2013/01/30 HTML / CSS
HTML5实现移动端弹幕动画效果
2019/08/01 HTML / CSS
html5移动端自适应布局的实现
2020/04/15 HTML / CSS
阿联酋网上花店:Ferns N Petals
2018/02/14 全球购物
智乐游戏测试笔试题
2014/05/21 面试题
2014年实验室工作总结
2014/12/03 职场文书
2019通用版新员工入职培训方案!
2019/07/11 职场文书
pytest进阶教程之fixture函数详解
2021/03/29 Python
python如何读取.mtx文件
2021/04/22 Python