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 Express框架中处理404页面一个方式
May 28 NodeJs
nodejs 的 session 简单使用
Jun 06 NodeJs
详解nodejs 文本操作模块-fs模块(二)
Dec 22 NodeJs
windows 下安装nodejs 环境变量设置
Feb 02 NodeJs
用nodeJS搭建本地文件服务器的几种方法小结
Mar 16 NodeJs
nodejs个人博客开发第二步 入口文件
Apr 12 NodeJs
详解使用PM2管理nodejs进程
Oct 24 NodeJs
使用nodejs+express实现简单的文件上传功能
Dec 27 NodeJs
nodejs取得当前执行路径的方法
May 13 NodeJs
nodejs图片处理工具gm用法小结
Dec 12 NodeJs
nodejs基础之buffer缓冲区用法分析
Dec 26 NodeJs
NodeJs实现简易WEB上传下载服务器
Aug 10 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
精致的人儿就要挑杯子喝咖啡
2021/03/03 冲泡冲煮
PHP 操作文件的一些FAQ总结
2009/02/12 PHP
php异常处理技术,顶级异常处理器
2012/06/13 PHP
php中Ctype函数用法详解
2014/12/09 PHP
PHP+MySQL修改记录的方法
2015/01/21 PHP
Symfony2学习笔记之控制器用法详解
2016/03/17 PHP
PHP支付系统设计与典型案例分享
2016/08/02 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
2020/08/30 PHP
特殊字符、常规符号及其代码对照表
2006/06/26 Javascript
线路分流自动跳转代码;希望对大家有用!
2006/12/02 Javascript
jquery 全局AJAX事件使用代码
2010/11/05 Javascript
jQuery实战之仿淘宝商城左侧导航效果
2011/04/12 Javascript
JavaScript导出Excel实例详解
2014/11/25 Javascript
简述JavaScript中正则表达式的使用方法
2015/06/15 Javascript
详解JavaScript正则表达式之RegExp对象
2015/12/13 Javascript
javascript基础知识
2016/06/07 Javascript
input框中自动展示当前日期yyyy/mm/dd的实现方法
2017/07/06 Javascript
JS库之Three.js 简易入门教程(详解之一)
2017/09/13 Javascript
vue组件watch属性实例讲解
2017/11/07 Javascript
layer.js open 隐藏滚动条的例子
2019/09/05 Javascript
vue中template的三种写法示例
2020/10/21 Javascript
python使用win32com在百度空间插入html元素示例
2014/02/20 Python
Python高级用法总结
2018/05/26 Python
python3+selenium自动化测试框架详解
2019/03/17 Python
centos+nginx+uwsgi+Django实现IP+port访问服务器
2019/11/15 Python
python使用openpyxl操作excel的方法步骤
2020/05/28 Python
世界上最大的乐谱选择:Sheet Music Plus
2020/01/18 全球购物
提高EJB性能都有哪些技巧
2012/03/25 面试题
2014年道德讲堂实施方案
2014/03/05 职场文书
乡镇组织委员个人整改措施
2014/09/16 职场文书
处级领导班子全部召开专题民主生活会情况汇报
2014/09/27 职场文书
群众路线剖析材料怎么写
2014/10/09 职场文书
2015高三毕业寄语赠言
2015/02/27 职场文书
2015年高中班主任工作总结
2015/04/30 职场文书
大学感恩节活动总结
2015/05/05 职场文书
MySQL时区造成时差问题
2022/04/13 MySQL