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文件操作模块FS(File System)常用函数简明总结
Jun 05 NodeJs
nodejs中简单实现Javascript Promise机制的实例
Dec 06 NodeJs
轻松创建nodejs服务器(9):实现非阻塞操作
Dec 18 NodeJs
轻松创建nodejs服务器(8):非阻塞是如何实现的
Dec 18 NodeJs
NodeJS学习笔记之Connect中间件模块(一)
Jan 27 NodeJs
nodejs爬虫抓取数据乱码问题总结
Jul 03 NodeJs
NodeJS的Promise的用法解析
May 05 NodeJs
使用Nodejs连接mongodb数据库的实现代码
Aug 21 NodeJs
详解使用PM2管理nodejs进程
Oct 24 NodeJs
nodejs使用redis作为缓存介质实现的封装缓存类示例
Feb 07 NodeJs
Nodejs对postgresql基本操作的封装方法
Feb 20 NodeJs
浅谈使用nodejs搭建web服务器的过程
Jul 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和JavaScrip分别获取关联数组的键值示例代码
2013/09/16 PHP
php事务处理实例详解
2014/07/11 PHP
PHP实现对站点内容外部链接的过滤方法
2014/09/10 PHP
JavaScript 自动分号插入(JavaScript synat:auto semicolon insertion)
2009/11/04 Javascript
关于scrollLeft,scrollTop的浏览器兼容性测试
2013/03/19 Javascript
jquery内置验证(validate)使用方法示例(表单验证)
2013/12/04 Javascript
jquery 淡入淡出效果的简单实现
2014/02/07 Javascript
javascript实现tab响应式切换特效
2016/01/29 Javascript
AngularJS中的API(接口)简单实现
2016/07/28 Javascript
JavaScript九九乘法口诀表的简单实现
2016/10/04 Javascript
浅谈jquery的html方法里包含特殊字符的处理
2016/11/30 Javascript
微信小程序中多个页面传参通信的学习与实践
2017/05/05 Javascript
JS复杂判断的更优雅写法代码详解
2018/11/07 Javascript
微信小程序仿知乎实现评论留言功能
2018/11/28 Javascript
jQuery实现合并表格单元格中相同行操作示例
2019/01/28 jQuery
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
2020/03/06 Javascript
js实现直播点击飘心效果
2020/08/19 Javascript
跟老齐学Python之编写类之二方法
2014/10/11 Python
Python中几个比较常见的名词解释
2015/07/04 Python
Scrapy-Redis结合POST请求获取数据的方法示例
2019/05/07 Python
python爬虫爬取笔趣网小说网站过程图解
2019/11/18 Python
Python多分支if语句的使用
2020/09/03 Python
linux mint中搜狗输入法导致pycharm卡死的问题
2020/10/28 Python
python 简单的调用有道翻译
2020/11/25 Python
Python修改DBF文件指定列
2020/12/19 Python
python实现简单的学生管理系统
2021/02/22 Python
介绍一下SQL Server里面的索引视图
2016/07/31 面试题
2015年幼儿园毕业感言
2014/02/12 职场文书
新年晚会主持词
2014/03/24 职场文书
2014年重阳节老干部座谈会局领导发言稿
2014/09/25 职场文书
党员教师自我剖析材料
2014/09/29 职场文书
2014年党委工作总结
2014/11/22 职场文书
2015学习委员工作总结范文
2015/04/03 职场文书
SpringBoot读取Resource下文件的4种方法
2021/07/02 Java/Android
python unittest单元测试的步骤分析
2021/08/02 Python
Python通过loop.run_in_executor执行同步代码 同步变为异步
2022/04/11 Python