随机生成验证码
from PIL import Image, ImageDraw, ImageFont import random
随机颜色1(背景颜色):
def rndColor(): return (random.randint(170, 250), random.randint(170, 250), random.randint(170, 250))
随机颜色2(数字或字母颜色):
def rndColor2(): return (random.randint(0, 127), random.randint(0, 127), random.randint(0, 127))
生成随机验证码文本
def generate_random_code(code_length): code_chars = '0123456789abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ-_*#$%' # 0123456789abcdefghjkmnpqrstuvwxyz code = '' for _ in range(code_length): code += random.choice(code_chars) return code
生成验证码图片
def generate_captcha_image(width, height, code_length):
创建一个空白图片
image = Image.new('RGBA', (width, height), (255, 255, 255)) draw = ImageDraw.Draw(image) for x in range(width): for y in range(height): draw.point((x, y), fill=rndColor())
选择字体和字体大小
font = ImageFont.truetype('arial.ttf', 20)
生成随机验证码文本
code = generate_random_code(code_length) ascent, descent = font.getsize(code) # 这里拿到文字内容的大小
将验证码文本绘制到图片上
x = 1 # width/2-ascent/2 # 这里是文字内容的居中绘制算法
print(code)
for i in range(6):
draw.text((x+i*(width-2*x)/6, 0), code[i], font=font, fill=rndColor2())
return image
def save_captcha_image(image, filename):
image.save(filename)
调用生成验证码图片和保存验证码图片的函数
captcha_image = generate_captcha_image(80, 22, 6) save_captcha_image(captcha_image, 'captcha.png') img = Image.open(('captcha.png')) Image._show(img)