您的位置:首页 > 编程语言 > Python开发

使用 Python 生成类数字字母混合验证码图片

2018-03-04 17:50 573 查看

分析

首先是要生成含有数字字母的字符串

然后创建画布,并且随机填充画布的颜色

最后将字符画上去,为了保证画上去的字符不同色,需将这些字符保存为一个列表通过多次画上去,期间要随机设置颜色值

在这里我们通过使用PIL模块来操作图像,random模块进行随机生成

from PIL import Image,ImageDraw,ImageFont,ImageFilter
import random
import string

#混合字符串,可自定义
basic_string = '0123456789'+string.letters+'9876543210'
def randColor():  #产生随机颜色
return (random.randint(64,255),random.randint(64,255),random.randint(64,255))

def randChar():  #产生随机数字字母组合列表
return random.sample(basic_string,4)#chr(random.randint(65,90))

def pictureDraw():
height=60
width=240
image=Image.new('RGB',(width,height),(255,255,255))  #白色画布
font=ImageFont.truetype("C:/windows/fonts/Arial.ttf",36)        #画笔字体
draw=ImageDraw.Draw(image)   #绘画对象
for i in range(width):
for j in range(height):
draw.point((i,j),fill=randColor())     #随机逐像素填充颜色

for i in range(4):
draw.text((60*i+10,19),randChar()[i],font=font,fill=(random.randint(30,120),random.randint(30,120),random.randint(30,120)))  #文本绘画

image=image.filter(ImageFilter.BLUR)  #产生模糊感
image.save('CAPTCHA.jpg','jpeg')
image.show()

if __name__=='__main__':
pictureDraw()


运行结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: