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 相关文章推荐
PHPStorm 2020.1 调试 Nodejs的多种方法详解
Sep 17 NodeJs
详解nodejs 文本操作模块-fs模块(二)
Dec 22 NodeJs
nodejs搭建本地http服务器教程
Mar 13 NodeJs
nodejs爬虫遇到的乱码问题汇总
Apr 07 NodeJs
CentOS 安装NodeJS V8.0.0的方法
Jun 15 NodeJs
Nodejs 和Session 原理及实战技巧小结
Aug 25 NodeJs
详解nodeJs文件系统(fs)与流(stream)
Jan 24 NodeJs
NodeJS实现自定义流的方法
Aug 01 NodeJs
nodejs图片处理工具gm用法小结
Dec 12 NodeJs
Nodejs对postgresql基本操作的封装方法
Feb 20 NodeJs
Nodejs核心模块之net和http的使用详解
Apr 02 NodeJs
nodejs实现聊天机器人功能
Sep 19 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
Yii使用技巧大汇总
2015/12/29 PHP
PHP面向对象学习之parent::关键字
2017/01/18 PHP
Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建
2019/12/13 PHP
简明json介绍
2008/09/28 Javascript
javascript字符串拼接的效率问题
2010/12/25 Javascript
实现变速回到顶部的JavaScript代码
2011/05/09 Javascript
js中的for如何实现foreach中的遍历
2014/05/31 Javascript
Egret引擎开发指南之运行项目
2014/09/03 Javascript
jQuery仅用3行代码实现的显示与隐藏功能完整实例
2015/10/08 Javascript
基于JavaScript代码实现兼容各浏览器的设为首页和加入收藏
2016/01/07 Javascript
浅析Javascript中bind()方法的使用与实现
2016/04/29 Javascript
javascript判断图片是否加载完成的方法推荐
2016/05/13 Javascript
javascript使用 concat 方法对数组进行合并的方法
2016/09/08 Javascript
bootstrap折叠调用collapse()后data-parent不生效的快速解决办法
2017/02/23 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
2017/03/09 Javascript
Angular4学习笔记之根模块与Ng模块
2017/09/09 Javascript
javascript和php使用ajax通信传递JSON的实例
2018/08/21 Javascript
vue 自定义指令自动获取文本框焦点的方法
2018/08/25 Javascript
vue基于两个计算属性实现选中和全选功能示例
2019/02/08 Javascript
vue基础之事件v-onclick=&quot;函数&quot;用法示例
2019/03/11 Javascript
js实现图片推拉门效果代码实例
2019/05/18 Javascript
bootstrap-table后端分页功能完整实例
2020/06/01 Javascript
浅析vue中的nextTick
2020/12/28 Vue.js
在python的WEB框架Flask中使用多个配置文件的解决方法
2014/04/18 Python
PyQt 线程类 QThread使用详解
2017/07/16 Python
详解python使用Nginx和uWSGI来运行Python应用
2018/01/09 Python
python 随机森林算法及其优化详解
2019/07/11 Python
css3教程之倾斜页面
2014/01/27 HTML / CSS
Sneaker Studio匈牙利:购买运动鞋
2018/03/26 全球购物
加拿大鞋网:Globo Shoes
2019/12/26 全球购物
戴尔马来西亚官网:Dell Malaysia
2020/05/02 全球购物
公司前台接待岗位职责
2013/12/03 职场文书
公司授权委托书
2014/04/04 职场文书
秋天的雨教学反思
2014/04/27 职场文书
2016元旦主持人开场白
2015/12/03 职场文书
详解Python为什么不用设计模式
2021/06/24 Python