python生成随机验证码(中文验证码)示例

夕阳是如此的美丽。太阳改变了颜色,火红火红的,没有了中午的那份狂躁与炽热,从远处向它看去,斜晖洒在脸上,脸便立即变成了红褐色,感觉就像是一个慈祥的老人深情的摸着你的头,亲切而又温暖。


# -*- coding: utf-8 -*-
import Image,ImageDraw,ImageFont
import random
import math, string

class RandomChar():
"""用于随机生成汉字"""
@staticmethod
def Unicode():
val = random.randint(0x4E00, 0x9FBF)
return unichr(val)

@staticmethod
def GB2312():
head = random.randint(0xB0, 0xCF)
body = random.randint(0xA, 0xF)
tail = random.randint(0, 0xF)
val = ( head << 8 ) | (body << 4) | tail
str = "%x" % val
return str.decode('hex').decode('gb2312')

class ImageChar():
def __init__(self, fontColor = (0, 0, 0),
size = (100, 40),
fontPath = 'wqy.ttc',
bgColor = (255, 255, 255),
fontSize = 20):
self.size = size
self.fontPath = fontPath
self.bgColor = bgColor
self.fontSize = fontSize
self.fontColor = fontColor
self.font = ImageFont.truetype(self.fontPath, self.fontSize)
self.image = Image.new('RGB', size, bgColor)

def rotate(self):
self.image.rotate(random.randint(0, 30), expand=0)

def drawText(self, pos, txt, fill):
draw = ImageDraw.Draw(self.image)
draw.text(pos, txt, font=self.font, fill=fill)
del draw

def randRGB(self):
return (random.randint(0, 255),
random.randint(0, 255),
random.randint(0, 255))

def randPoint(self):
(width, height) = self.size
return (random.randint(0, width), random.randint(0, height))

def randLine(self, num):
draw = ImageDraw.Draw(self.image)
for i in range(0, num):
draw.line([self.randPoint(), self.randPoint()], self.randRGB())
del draw

def randChinese(self, num):
gap = 5
start = 0
for i in range(0, num):
char = RandomChar().GB2312()
x = start + self.fontSize * i + random.randint(0, gap) + gap * i
self.drawText((x, random.randint(-5, 5)), RandomChar().GB2312(), self.randRGB())
self.rotate()
self.randLine(18)

def save(self, path):
self.image.save(path)

到此这篇关于python生成随机验证码(中文验证码)示例就介绍到这了。最完善的东西最不容易受到外来影响的变动。举例来说,身体最强健的人不容易受饮食或劳作的影响,最茁壮的草木也不容易受风日的影响。更多相关python生成随机验证码(中文验证码)示例内容请查看相关栏目,小编编辑不易,再次感谢大家的支持!

您可能有感兴趣的文章
Python自动化运维-使用Python脚本监控华为AR路由器关键路由变化

Python自动化运维-netmiko模块设备自动发现

Python自动化运维—netmiko模块连接并配置华为交换机

Python自动化运维-利用Python-netmiko模块备份设备配置

Python3内置模块之json编码解码方法详解