作者:df0134330 | 来源:互联网 | 2024-11-29 11:18
在本次练习中,我们将探讨如何使用Python及Pillow库来生成一个包含随机字母与数字的验证码图像。
首先,确保您的环境中已安装Pillow库,可以通过pip install pillow命令进行安装。接下来,我们将编写代码来实现这一功能。
from PIL import Image, ImageDraw, ImageFont, ImageFilter
from random import randint
def generate_random_char():
'''生成随机字符,包括数字、大写字母和小写字母'''
char_type = randint(1, 3)
if char_type == 1:
return chr(randint(48, 57)) # 数字
elif char_type == 2:
return chr(randint(65, 90)) # 大写字母
else:
return chr(randint(97, 122)) # 小写字母
width, height = 250, 50
image = Image.new('RGB', (width, height), (255, 255, 255)) # 创建空白图像
fOnt= ImageFont.truetype('arial.ttf', 30) # 加载字体
# 绘制背景干扰点
for x in range(width):
for y in range(height):
image.putpixel((x, y), (randint(130, 255), randint(130, 255), randint(130, 255)))
draw = ImageDraw.Draw(image)
# 添加验证码文本
for i in range(4):
char = generate_random_char()
draw.text((50 * i + 10, 10), char, fOnt=font, fill=(randint(0, 255), randint(0, 255), randint(0, 255)))
image = image.filter(ImageFilter.BLUR) # 应用模糊效果
image.show() # 显示图像
上述代码首先定义了一个函数generate_random_char用于生成随机字符,这些字符可以是数字、大写字母或小写字母。然后,我们创建了一个指定大小的白色背景图像,并在其上绘制了随机颜色的背景点以增加干扰。接着,我们在图像的特定位置添加了四个随机生成的字符作为验证码的主要部分。最后,为了使验证码更加难以被机器识别,我们对整个图像应用了模糊滤镜,并显示了最终结果。