python--生成验证码

# 引入绘图模块
from PIL import Image, ImageDraw, ImageFont

# 引入numpy生成随机数
import random

# 随机生成一个画板颜色
bgcolor = (random.randrange(0, 256), random.randrange(0, 256), random.randrange(0, 256))

width = 100  # 定义宽度
height = 50  # 定义高度

# 创建画面对象,接受三个参数
# 参数一:表示三原色
# 参数二:宽度和高度
# 参数三:背景色
im = Image.new("RGB", (width, height), bgcolor)

# 创建画笔对象,接受画面对象
draw = ImageDraw.Draw(im)

# 调用画笔的point()函数绘制噪点
for i in range(100):
    # 噪点的横纵坐标
    x_y_point = (random.randrange(0, width), random.randrange(0, height))
    # 填充的颜色
    fill = (random.randrange(0, 256), random.randrange(0, 256), random.randrange(0, 256))
    # 绘制
    draw.point(x_y_point, fill=fill)

# 获取所有的字母加上数字
import string
alpha_digit = string.digits + string.ascii_lowercase + string.ascii_uppercase

# 随机选取四个作为验证码中的字符
verify_code = random.sample(alpha_digit, 4)

# 构造字体对象
font = ImageFont.truetype(r'C:\Users\Administrator\Desktop\satori.ttf', 40)

# 构造字体颜色,四个字符,构造四种随机颜色
fontcolor = [(random.randrange(0, 255), random.randrange(0, 255), random.randrange(0, 255)) for i in range(4)]

# 绘制四个字符
draw.text((5, 5), verify_code[0], font=font, fill=fontcolor[0])
draw.text((25, 10), verify_code[1], font=font, fill=fontcolor[0])
draw.text((60, 5), verify_code[2], font=font, fill=fontcolor[0])
draw.text((85, 10), verify_code[3], font=font, fill=fontcolor[0])

# 释放画笔
del draw

# 引入字节流,用于存储图片
from io import BytesIO
buf = BytesIO()

# 将图片的内容存储到buf当中,并制定格式
im.save(buf, 'png')

# 将图片保存到本地
with open("verify_code.png", "wb") as f:
    f.write(buf.getvalue())

  

 

猜你喜欢

转载自www.cnblogs.com/traditional/p/9254594.html
今日推荐