-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcode.js
80 lines (64 loc) · 1.63 KB
/
code.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
var http = require('http'),
captchapng = require('captchapng');
class VerificationCode {
constructor(length = 4, w = 80, h = 30) {
this.w = w;
this.h = h;
this.length = length;
this.randomNumber = null;
}
//
getRandomNumber() {
let i = 0,
res = [];
while(i < this.length) {
i++;
res.push(Math.floor(Math.random() * 10));
}
return res.join('');
}
//
getImgbase64() {
let cap;
this.randomNumber = this.getRandomNumber();
cap = new captchapng(this.w, this.h, this.randomNumber);
cap.color(0, 0, 0, 0);
cap.color(80, 80, 80, 255);
let img = cap.getBase64(),
imgbase64 = new Buffer(img, 'base64');
return imgbase64;
}
getJson() {
let imgbase64 = this.getImgbase64();
return {
number: this.randomNumber,
base64: 'data:image/png;base64,' + imgbase64.toString('base64')
}
}
}
let start = new Date().getTime();
let i = 0;
while((new Date().getTime() - start) < 1000) {
let img = (new VerificationCode()).getImgbase64();
i++;
}
console.log(`一秒钟可以生成${i}张`);
let server = new http.Server();
server.on('request', (req, res) => {
let url = req.url,
params = url.match(/(\?|&)(len=[^&]*)(&|$)/i),
number = params ?
params[2] ? params[2].split('=')[1] : 4
: 4,
code = new VerificationCode(number),
// data = code.getImgbase64()
data = JSON.stringify(code.getJson())
res.writeHead(200, {
// 'Content-Type': 'image/png'
'Content-Type': 'application/json'
});
res.write(data);
res.end();
});
server.close();
server.listen(8000);