图片验证码(svg-captcha)

315 阅读1分钟

在node.js中生成svg格式的验证码

安装

npm install --save svg-captcha

使用方法

const svgCaptcha = require('svg-captcha');

const captcha = svgCaptcha.create();
console.log(captcha);
// {data: '<svg.../svg>', text: 'abcd'}

在 express中使用

const svgCaptcha = require('svg-captcha');

app.get('/captcha', function (req, res) {
	const captcha = svgCaptcha.create();
	req.session.captcha = captcha.text;
	
	res.type('svg');
	res.status(200).send(captcha.data);
});

API

svgCaptcha.create(options)

如果没有任何参数,则生成的 svg 图片有4个字符。

  • size: number // 验证码长度,默认4
  • ignoreChars: '0o1i' // 验证码字符中排除 0o1i
  • noise: number // 干扰线条的数量,默认1
  • color: true // 验证码的字符是否有颜色,默认没有,如果设定了背景,则默认有
  • background: '#cc9966' // 验证码图片背景颜色
  • width: number // 验证码svg宽度
  • height: number // 验证码svg高度
  • fontSize: number // 验证码字体大小
  • charPreset: string // 随机字符预设(从这里随机取字符)

该函数返回的对象拥有以下属性

  • data: string // svg 路径
  • text: string // 验证码文字

svgCaptcha.createMathExpr(options)

和前面的 create 参数和返回值都一样。不同的是这个 api 生成的 svg 是一个算数式,而 text 属性上是算数式的结果。不过 createMathExpr 参数多了一些。

  • mathMin: number // 随机数最小值,默认1
  • mathMax: number // 随机数最大值,默认9
  • mathOperator: '+/-' // 运算符,可选值'+'、'-'、'+/-',默认'+/-'

svgCaptcha.loadFont(url)

加载字体,覆盖内置的字体。

  • url: string // 字体文件存放路径

svgCaptcha.randomText(size)

返回size长度随机字符串