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中exports与module.exports的区别详细介绍
Jan 14 NodeJs
Nodejs极简入门教程(一):模块机制
Oct 25 NodeJs
Nodejs实现的一个静态服务器实例
Dec 06 NodeJs
nodejs读写json文件的简单方法(必看)
Mar 09 NodeJs
nodejs开发——express路由与中间件
Mar 24 NodeJs
nodejs 终端打印进度条实例代码
Apr 22 NodeJs
nodejs操作mysql实现增删改查的实例
May 28 NodeJs
nodejs发送http请求时遇到404长时间未响应的解决方法
Dec 10 NodeJs
Nodejs实现用户注册功能
Apr 14 NodeJs
nodejs实现UDP组播示例方法
Nov 04 NodeJs
nodejs实现的http、https 请求封装操作示例
Feb 06 NodeJs
基于NodeJS开发钉钉回调接口实现AES-CBC加解密
Aug 20 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实现的redis缓存类定义与使用方法示例
2017/08/09 PHP
在Javascript中为String对象添加trim,ltrim,rtrim方法
2006/09/22 Javascript
基于JQuery实现CheckBox全选全不选
2011/06/27 Javascript
动态加载外部javascript文件的函数代码分享
2011/07/28 Javascript
JavaScript中“+”的陷阱深刻理解
2012/12/04 Javascript
jquery实现的图片点击滚动效果
2014/04/29 Javascript
Node.js(安装,启动,测试)
2014/06/09 Javascript
jquery常用方法及使用示例汇总
2014/11/08 Javascript
jQuery中Form相关知识汇总
2015/01/06 Javascript
javascript针对不确定函数的执行方法
2015/12/16 Javascript
javascript仿百度输入框提示自动下拉补全
2016/01/07 Javascript
vue双向绑定的简单实现
2016/12/22 Javascript
详解JavaScript中this的指向问题
2017/01/20 Javascript
VUE axios发送跨域请求需要注意的问题
2017/07/06 Javascript
angularjs实现简单的购物车功能
2017/09/21 Javascript
es6 symbol的实现方法示例
2019/04/02 Javascript
AjaxFileUpload.js实现异步上传文件功能
2019/04/19 Javascript
Vue+Element-UI实现上传图片并压缩
2019/11/26 Javascript
JavaScript Dom实现轮播图原理和实例
2021/02/19 Javascript
python列表操作之extend和append的区别实例分析
2015/07/28 Python
Python iter()函数用法实例分析
2018/03/17 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
关于PyTorch 自动求导机制详解
2019/08/18 Python
Python基于正则表达式实现计算器功能
2020/07/13 Python
python实现简单的tcp 文件下载
2020/09/16 Python
怀俄明州飞钓:Platte River Fly Shop
2017/12/28 全球购物
公务员年总结的自我评价
2013/10/25 职场文书
技校毕业生个人学习的自我评价
2014/02/21 职场文书
汽车机修工岗位职责
2014/03/06 职场文书
部门年终奖分配方案
2014/05/07 职场文书
教师批评与自我批评
2014/10/15 职场文书
八月迷情观后感
2015/06/11 职场文书
MySQL 外键约束和表关系相关总结
2021/06/20 MySQL
SpringBoot系列之MongoDB Aggregations用法详解
2022/02/12 MongoDB
Spring Boot 使用 Spring-Retry 进行重试框架
2022/04/24 Java/Android
nginx 添加http_stub_status_module模块
2022/05/25 Servers