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的前后端分离的思考与实践(三)轻量级的接口配置建模框架
Sep 26 NodeJs
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
Aug 21 NodeJs
Nodejs获取网络数据并生成Excel表格
Mar 31 NodeJs
使用nodejs下载风景壁纸
Feb 05 NodeJs
Nodejs回调加超时限制两种实现方法
Jun 09 NodeJs
nodejs后台集成ueditor富文本编辑器的实例
Jul 11 NodeJs
理解nodejs的stream和pipe机制的原理和实现
Aug 12 NodeJs
Nodejs+express+ejs简单使用实例代码
Sep 18 NodeJs
windows系统下更新nodejs版本的方案
Nov 24 NodeJs
nodejs+mongodb+vue前后台配置ueditor的示例代码
Jan 02 NodeJs
NodeJS服务器实现gzip压缩的示例代码
Oct 12 NodeJs
nodejs制作小爬虫功能示例
Feb 24 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
PHP 5.0对象模型深度探索之类的静态成员
2008/03/27 PHP
php eval函数用法总结
2012/10/31 PHP
php fread读取文件注意事项
2016/09/24 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
2017/02/28 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
PHP示例演示发送邮件给某个邮箱
2019/04/03 PHP
JavaScript 编程引入命名空间的方法与代码
2007/08/13 Javascript
javascript学习笔记(九) js对象 设计模式
2012/06/19 Javascript
js操作IE浏览器弹出浏览文件夹可以返回目录路径
2014/07/14 Javascript
get(0).tagName获得作用标签示例代码
2014/10/08 Javascript
JavaScript中指定函数名称的相关方法
2015/06/04 Javascript
jQuery获得字体颜色16位码的方法
2016/02/20 Javascript
jQuery获取cookie值及删除cookie用法实例
2016/04/15 Javascript
基于javascript实现精确到毫秒的倒计时限时抢购
2016/04/17 Javascript
解析JavaScript面向对象概念中的Object类型与作用域
2016/05/10 Javascript
基于Bootstrap实现下拉菜单项和表单导航条(两个菜单项,一个下拉菜单和登录表单导航条)
2016/07/22 Javascript
浅析$(function) ready和onload 的区别
2016/09/03 Javascript
微信小程序基于canvas渐变实现的彩虹效果示例
2019/05/03 Javascript
在Vue中创建可重用的 Transition的方法
2020/06/02 Javascript
微信小程序连续签到7天积分获得功能的示例代码
2020/08/20 Javascript
[36:02]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第一局
2016/02/28 DOTA
[01:38]完美世界高校联赛决赛花絮
2018/12/02 DOTA
Python简明入门教程
2015/08/04 Python
python使用fcntl模块实现程序加锁功能示例
2017/06/23 Python
virtualenv实现多个版本Python共存
2017/08/21 Python
解决Python2.7中IDLE启动没有反应的问题
2018/11/30 Python
python opencv 实现读取、显示、写入图像的方法
2020/06/08 Python
解决方案设计综合面试题
2015/08/31 面试题
白酒市场开发计划书
2014/01/09 职场文书
李培根演讲稿
2014/05/22 职场文书
中学生2014国庆节演讲稿:不屈的民族
2014/09/21 职场文书
百年校庆感言
2015/08/01 职场文书
员工考勤管理制度
2015/08/06 职场文书
朋友聚会祝酒词
2015/08/10 职场文书
浅谈如何提高PHP代码的质量
2021/05/28 PHP
教你使用一行Python代码玩遍童年的小游戏
2021/08/23 Python