3.0.1 • Published 7 years ago

@magnatag/canvas-captcha v3.0.1

Weekly downloads
1
License
MIT
Repository
github
Last release
7 years ago

canvas-captcha

Build Status

a captcha module for nodejs based on node-canvas

note

  • install Cairo first, For system-specific installation view the Wiki from node-canvas
  • if you can see the captcha image, but empty, try another font your server has or install proper font pack in your server, such as sudo apt-get install ttf-mscorefonts-installer.

Installation

npm install canvas-captcha

use

//captcha 
var captcha = require('canvas-captcha')
,captchaOptions = {
	charPool: ('abcdefghijklmnopqrstuvwxyz' + 'abcdefghijklmnopqrstuvwxyz'.toUpperCase() + '1234567890').split('') //char pool Array
	,size: {
		width: 100
		,height: 32
	} //image size
	,textPos: {
		left: 15
		,top: 26
	} //text drawing start position
	,rotate: .01 //text ratate
	,charLength: 4 //how many chars
	,font: '26px Unifont' //font size
	,strokeStyle: '#0088cc' //style
	,bgColor: '#eeeeee' //bg color
	,confusion: true //draw another group background text to mangle the text
	,cFont: '30px Arial' //bg text style
	,cStrokeStyle: '#adc' //bg text color
	,cRotate: -.05 //bg text rotate
}

//callback style
app.get('/captcha', function(req, res) {
	captcha(captchaOptions, function(err, data) {
		if(err) {
			res.send(err)
		}
		else {
			req.session.captcha = data.captchaStr
			res.end(data.captchaImg)
		}
	})
})

//use promise
var captchaPromise = function(options) {
	return new Promise(function(resolve, reject) {
		captcha(options, function(err, data) {
			if(err) reject(err)
			else resolve(data)
		})
	})
}

//in express
app.get('/captcha', function(req, res) {

	captchaPromise(captchaOptions)
	.then(function(data) {
		req.session.captcha = data.captchaStr
		res.end(data.captchaImg)
	}, function(err) {
		res.send(err)
	})

})

//in koa
app.get('/captcha', function* (next) {

	var data = yield captchaPromise(captchaOptions)
	this.session.captcha = data.captchaStr
	this.body = data.captchaImg

})

test && example

git clone https://github.com/zxdong262/canvas-captcha.git
cd canvas-captcha
sudo npm install

# test
npm run test

#example
node test/app.js
# then visit http://127.0.0.1:5001

changelog

  • 2.1.0 use canvas 1.3.15, support node 6.2+
  • 2.0.1 use canvas 1.3.12, a little rewrite
  • 2.0.0 use canvas 1.2.9, compatible with nodejs v4
  • 1.2.8 use 'Unifont' as default font
  • 1.2.7 use 'system' as default font
  • 1.2.6 just fix readme koa example
  • 1.2.5 add some example to readme, use canvas version 1.2.1
  • 1.2.4 make err the first callback param
  • 1.2.3 use canvas version 1.1.6 version instead of version *

license

MIT