图片验证码通常用于网站注册或登录时防止机器人自动化操作。下面是一个简单的Python示例,使用PIL库生成验证码图片。请注意,这只是一个基本的示例,实际应用中可能需要更复杂的逻辑和安全性措施。

确保已经安装了PIL库(Python Imaging Library),如果没有安装,可以通过pip安装:
pip install pillow
你可以使用以下代码生成验证码图片:

from PIL import Image, ImageDraw, ImageFont
import random
import string
生成随机验证码字符
def generate_code(length=4):
all_chars = string.ascii_letters + string.digits # 包括大小写字母和数字
return ’’.join(random.choice(all_chars) for _ in range(length))
生成验证码图片并添加文字
def generate_captcha(text):
width, height = 100, 50 # 图片尺寸
font_size = 24 # 字体大小
font = ImageFont.truetype(’arial.ttf’, font_size) # 使用ttf字体文件,这里假设arial字体文件在当前目录
image = Image.new(’RGB’, (width, height), color=(255, 255, 255)) # 创建空白图片
draw = ImageDraw.Draw(image) # 创建画笔对象
draw.text((width/2-10, height/2-10), text, font=font, fill=(0, 0, 0)) # 在图片上添加文字
return image
生成带有干扰线条的验证码图片并保存或展示
def generate_captcha_with_lines(text):
image = generate_captcha(text) # 生成不带线条的验证码图片
width, height = image.size # 获取图片尺寸
draw = ImageDraw.Draw(image) # 创建画笔对象用于添加线条干扰
for _ in range(5): # 添加随机线条干扰,数量可调整
start_point = (random.randint(0, width), random.randint(0, height)) # 随机起点坐标
end_point = (random.randint(0, width), random.randint(0, height)) # 随机终点坐标,避免与起点相同点重合,增加干扰效果,这里省略了检查逻辑,在实际应用中需要确保线条不会覆盖文字。
draw.line([start_point, end_point], fill=(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)), width=2) # 画线干扰,宽度可调整,这里省略了确保线条不会覆盖文字的复杂逻辑,在实际应用中需要处理这种情况以避免影响验证码的可读性,保存或展示图片等后续操作可以根据实际需求进行,可以使用image的save方法保存图片到本地文件,或者使用show方法展示图片等,请根据实际情况自行实现这些功能,请注意实际应用中还需要考虑安全性问题,比如防止验证码被自动识别等,这通常需要更复杂的逻辑和安全性措施来实现,这里只是一个简单的示例代码供您参考和学习使用。




