生成验证码是一个常见的需求,特别是在创建网站或应用程序时。以下是一个简单的Python程序,使用PIL库生成验证码图片。这个程序会生成一个包含随机字符的验证码,并将其绘制在一个背景图像上。请注意,为了运行这个程序,你需要先安装PIL库。你可以使用pip来安装。pip install pillow。

from PIL import Image, ImageDraw, ImageFont
import random
import string
生成随机字符的方法
def random_string(length):
return ’’.join(random.choices(string.ascii_uppercase + string.digits, k=length))
生成验证码的方法
def generate_captcha(text, width=200, height=80):
# 创建图像对象
image = Image.new(’RGB’, (width, height), color=(random.randint(200, 255), random.randint(200, 255), random.randint(200, 255))) # 随机背景颜色
draw = ImageDraw.Draw(image) # 创建绘图对象
font = ImageFont.truetype(’arial’, 36) # 使用字体和大小创建字体对象,这里使用arial字体和大小36
draw.text((width / 4, height / 3), text=(text + ’ ’), font=font, fill=(random.randint(0, 127), random.randint(0, 127), random.randint(0, 127))) # 在图像上添加文本(验证码)
draw.line([(random.randint(width / 4, width / 2), random.randint(height / 4, height / 2)), (random.randint(width / 3 * 2, width), random.randint(height / 4 * 3, height))], fill=(random.randint(0, 127), random.randint(0, 127), random.randint(0, 127)), width=random.randint(1, 3)) # 随机画一条线作为干扰项
draw.point([(random.randint(width / 4 * i, width / 4 * (i + 1)), random.randint(height / 4 * j, height / 4 * (j + 1))) for i in range(4) for j in range(4)], fill=(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)), mode=’replace’) # 随机画一些点作为干扰项
image.save(’captcha_’ + str(random.randint(1000, 9999)) + ’.png’) # 保存图像到文件,文件名包含随机数字以避免覆盖旧文件
return image # 返回图像对象以便后续处理(例如显示或上传)
生成验证码文本并保存图像到文件
text = random_string(6) # 生成一个包含随机字符的字符串作为验证码文本(这里生成一个长度为6的字符串)
generate_captcha(text) # 生成验证码图像并保存到文件(这里使用默认宽度和高度)这个程序首先定义了一个生成随机字符串的方法,然后定义了一个生成验证码的方法,这个方法创建一个新的图像对象,并在上面添加文本(验证码)、线条和点作为干扰项,它将图像保存到文件中并返回图像对象,你可以根据需要调整这个程序的参数和逻辑来满足你的需求。






