Python 生成随机图片验证码
发布人:shili8
发布时间:2025-03-05 09:58
阅读次数:0
**生成随机图片验证码**
在现代网络应用中,图片验证码(CAPTCHA)已经成为防止恶意爬虫和自动化攻击的重要手段。然而,传统的文字或图像识别技术容易被破解。因此,我们需要一种更为复杂、难以破解的验证码系统。
本文将介绍如何使用 Python生成随机图片验证码。我们将使用 Pillow 库来处理图像,并利用随机数生成器来创建独特的验证码。
**依赖库**
* `Pillow`:用于图像处理和绘制* `numpy`:用于数字数组操作
bashpip install pillow numpy
**验证码类定义**
首先,我们需要定义一个验证码类,负责生成随机图片验证码。这个类将包含以下属性:
* `width` 和 `height`:验证码图像的宽度和高度* `num_chars`:验证码中字符的数量* `font_size`:验证码中的字体大小
import numpy as npfrom PIL import Image, ImageDraw, ImageFontclass Captcha: def __init__(self, width=200, height=60, num_chars=6, font_size=24): self.width = width self.height = height self.num_chars = num_chars self.font_size = font_size
**生成验证码**
下一步是生成验证码。我们将使用随机数生成器来创建独特的验证码。
import randomdef generate_captcha(self): #生成随机背景颜色 background_color = (random.randint(200,255), random.randint(200,255), random.randint(200,255)) #生成随机前景颜色 foreground_color = (random.randint(0,100), random.randint(0,100), random.randint(0,100)) # 创建图像 img = Image.new('RGB', (self.width, self.height), background_color) # 获取绘制对象 draw = ImageDraw.Draw(img) #生成随机验证码 captcha = ''.join(random.choice('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ') for _ in range(self.num_chars)) # 绘制验证码 font = ImageFont.truetype('arial.ttf', self.font_size) for i, char in enumerate(captcha): draw.text((i * (self.width // self.num_chars) +5,10), char, fill=foreground_color, font=font) return captcha, img
**保存验证码**
最后,我们需要将验证码保存为图像文件。
def save_captcha(self, captcha, img): #生成随机文件名 filename = f'captcha_{random.randint(1000,9999)}.png' #保存图像 img.save(filename) return filename
**示例使用**
下面是一个示例使用:
captcha = Captcha() captcha.generate_captcha() captcha, img = captcha.generate_captcha() filename = captcha.save_captcha(captcha, img) print(f'验证码已保存为{filename}')
本文介绍了如何使用 Python生成随机图片验证码。我们使用 Pillow 库来处理图像,并利用随机数生成器来创建独特的验证码。验证码类定义了宽度、高度、字符数量和字体大小等属性,生成验证码函数使用随机数生成器来创建独特的验证码,保存验证码函数将验证码保存为图像文件。示例使用展示了如何使用验证码类生成并保存验证码。