第 0010 题: 使用 Python 生成类似于下图中的字母验证码图片
解答:先要生成一个随机码,然后再空白画布上添加验证码
#encoding:utf-8
import string
import random
from PIL import Image,ImageDraw,ImageFont,ImageFilter
# 获取一个四位数的随机验证码
def create_vertify_code():
basic_string = string.ascii_letters + string.digits #大小写字母+数字
return random.sample(basic_string, 4)
def randColor():
return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))
def draw_vertify_code_image(code):
width = 250
height = 60
#1.先创建一张白色的画布
image = Image.new('RGB', (width, height), (255, 255, 255))
#2.获取绘画对象
draw = ImageDraw.Draw(image) # 绘画对象
#3.给画板填充背景颜色
for i in range(0,width):
for j in range(0,height):
draw.point((i,j),fill=randColor())
#4.再画板上添加验证码
font = ImageFont.truetype("C:/windows/fonts/Arial.ttf", 36) # 画笔字体
for i in range(4):
draw.text((50+i*50,15),code[i],font=font,fill=(random.randint(30,120),random.randint(30,120),random.randint(30,120)))
#5.产生模糊感
image = image.filter(ImageFilter.BLUR) # 产生模糊感
image.save('vertifyCode.jpg', 'jpeg')
image.show()
if __name__ == '__main__':
code = create_vertify_code()
draw_vertify_code_image(code)
效果如下: