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 相关文章推荐
基于 Docker 开发 NodeJS 应用
Jul 30 NodeJs
Nodejs为什么选择javascript为载体语言
Jan 13 NodeJs
nodejs中使用多线程编程的方法实例
Mar 24 NodeJs
nodejs调用cmd命令实现复制目录
May 04 NodeJs
Nodejs进阶:核心模块net入门学习与实例讲解
Nov 21 NodeJs
nodejs中向HTTP响应传送进程的输出
Mar 19 NodeJs
nodejs入门教程五:连接数据库的方法分析
Apr 24 NodeJs
nodejs socket服务端和客户端简单通信功能
Sep 14 NodeJs
NodeJs form-data格式传输文件的方法
Dec 13 NodeJs
nodejs实现OAuth2.0授权服务认证
Dec 27 NodeJs
关于Mac下安装nodejs、npm和cnpm的教程
Apr 11 NodeJs
使用nodejs实现JSON文件自动转Excel的工具(推荐)
Jun 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
MySQL GBK→UTF-8编码转换
2007/05/24 PHP
php站内搜索并高亮显示关键字的实现代码
2011/12/29 PHP
ThinkPHP3.1新特性之对页面压缩输出的支持
2014/06/19 PHP
实例讲解PHP设计模式编程中的简单工厂模式
2016/02/29 PHP
PHP中PDO的事务处理分析
2016/04/07 PHP
php数组遍历类与用法示例
2019/05/24 PHP
更正确的asp冒泡排序
2007/05/24 Javascript
javascript parseInt 大改造
2009/09/27 Javascript
在iframe里的页面编写js,实现在父窗口上创建动画效果展开和收缩的div(不变动iframe父窗口代码)
2011/12/20 Javascript
jquery动态加载select下拉框示例代码
2013/12/10 Javascript
jQuery中bind与live的用法及区别小结
2014/01/27 Javascript
使用js判断当前时区TimeZone是否是夏令时
2014/02/23 Javascript
浅析JS中document对象的一些重要属性
2014/03/06 Javascript
JavaScript中继承用法实例分析
2015/05/16 Javascript
js实现随屏幕滚动的带缓冲效果的右下角广告代码
2015/09/04 Javascript
javascript 数组的定义和数组的长度
2016/06/07 Javascript
Bootstrap模态框禁用空白处点击关闭
2016/10/20 Javascript
js倒计时小实例(多次定时)
2016/12/08 Javascript
使用jQuery的load方法设计动态加载及解决被加载页面js失效问题
2017/03/01 Javascript
Vue如何实现组件的源码解析
2017/06/08 Javascript
cordova入门基础教程及使用中遇到的一些问题总结
2017/11/14 Javascript
Vue.set()实现数据动态响应的方法
2018/02/07 Javascript
让axios发送表单请求形式的键值对post数据的实例
2018/08/11 Javascript
vue列表单项展开收缩功能之this.$refs的详解
2019/05/05 Javascript
vue动态配置模板 'component is'代码
2019/07/04 Javascript
python实现单链表的方法示例
2019/09/03 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
2020/03/03 Python
Python环境搭建过程从安装到Hello World
2021/02/05 Python
HTML5 实现一个访问本地文件的实例
2012/12/13 HTML / CSS
HTML5实现WebSocket协议原理浅析
2014/07/07 HTML / CSS
个人找工作自荐信格式
2013/09/21 职场文书
写好自荐信的技巧
2013/11/08 职场文书
安全先进班组材料
2014/12/26 职场文书
物业客服专员岗位职责
2015/04/07 职场文书
关于PostgreSQL JSONB的匹配和交集问题
2021/09/14 PostgreSQL
你真的会用Mysql的explain吗
2022/03/31 MySQL