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 提示‘xxx’ 不是内部或外部命令解决方法
Nov 20 NodeJs
浅谈Nodejs应用主文件index.js
Aug 28 NodeJs
图片上传之FileAPI与NodeJs
Jan 24 NodeJs
nodejs爬虫遇到的乱码问题汇总
Apr 07 NodeJs
Nodejs读取文件时相对路径的正确写法(使用fs模块)
Apr 27 NodeJs
nodejs之get/post请求的几种方式小结
Jul 26 NodeJs
nodejs简单访问及操作mysql数据库的方法示例
Mar 15 NodeJs
Nodejs使用Mongodb存储与提供后端CRD服务详解
Sep 04 NodeJs
nodejs更新package.json中的dependencies依赖到最新版本的方法
Oct 10 NodeJs
nodejs aes 加解密实例
Oct 10 NodeJs
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
Mar 02 NodeJs
NodeJS实现一个聊天室功能
Nov 25 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 超链接 抓取实现代码
2009/06/29 PHP
PHP常用技术文之文件操作和目录操作总结
2014/09/27 PHP
利用PHP判断文件是否为图片的方法总结
2017/01/06 PHP
php取出数组单个值的方法
2018/03/12 PHP
简单JS代码压缩器
2006/10/12 Javascript
用js做一个小游戏平台 (一)
2009/12/29 Javascript
JavaScript 一行代码,轻松搞定浮动快捷留言-V2升级版
2010/04/02 Javascript
学习面向对象之面向对象的术语
2010/11/30 Javascript
ztree获取当前选中节点子节点id集合的方法
2015/02/12 Javascript
Angularjs中ng-repeat-start与ng-repeat-end的用法实例介绍
2016/12/31 Javascript
JavaScript在form表单中使用button按钮实现submit提交方法
2017/01/23 Javascript
js实现自动图片轮播代码
2017/03/22 Javascript
vue子父组件通信的实现代码
2017/07/09 Javascript
详谈js原型继承的一些问题
2017/09/06 Javascript
微信小程序在线客服自动回复功能(基于node)
2019/07/03 Javascript
vue 封装 Adminlte3组件的实现
2020/03/18 Javascript
JavaScript编写开发动态时钟
2020/07/29 Javascript
在Python的Flask框架中使用模版的入门教程
2015/04/20 Python
使用Python的Tornado框架实现一个Web端图书展示页面
2016/07/11 Python
python 列表,数组和矩阵sum的用法及区别介绍
2018/06/28 Python
深入理解Python异常处理的哲学
2019/02/01 Python
pandas DataFrame 交集并集补集的实现
2019/06/24 Python
Python 3 实现定义跨模块的全局变量和使用教程
2019/07/07 Python
解决Python3 控制台输出InsecureRequestWarning问题
2019/07/15 Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
2020/04/02 Python
Python创建自己的加密货币的示例
2021/03/01 Python
Michael Kors美国官网:美式奢侈生活风格的代表
2016/11/25 全球购物
全球知名的婚恋交友网站:Match.com
2017/01/05 全球购物
有原因的手表:Flex Watches
2019/03/23 全球购物
师德师风剖析材料
2014/09/30 职场文书
商铺门面租房协议书
2014/10/21 职场文书
八项规定自查自纠报告及整改措施
2014/10/26 职场文书
2014年客服工作总结与计划
2014/12/09 职场文书
西双版纳导游词
2015/02/03 职场文书
MySQL之高可用集群部署及故障切换实现
2021/04/22 MySQL
mybatis中注解与xml配置的对应关系和对比分析
2021/08/04 Java/Android