在Python中,您可以使用Pillow库来创建一个验证码类,该类能够生成带有随机文字的验证码图片。下面是一个简单的验证码类的实现:
from PIL import Image, ImageDraw, ImageFont
import random
class Captcha(object):
def __init__(self, width=150, height=50, char_set='ABCDEFGHJKLMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz23456789', font_path='arial.ttf'):
self.width = width
self.height = height
self.char_set = char_set
self.font_path = font_path
self.font_size = 30
def get_random_char(self):
return random.choice(self.char_set)
def generate_code(self, length=6):
return ''.join([self.get_random_char() for _ in range(length)])
def draw_captcha(self, code):
img = Image.new('RGB', (self.width, self.height), (255, 255, 255))
draw = ImageDraw.Draw(img)
for i in range(len(code)):
rand_x = random.randint(0, self.width)
rand_y = random.randint(0, self.height)
rand_color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
draw.text((rand_x, rand_y), code[i], font=ImageFont.truetype(self.font_path, self.font_size), fill=rand_color)
return img
def save_captcha(self, img, filename='captcha.png'):
img.save(filename)
def show_captcha(self, img):
img.show()
使用这个类来生成一个验证码如下:
captcha = Captcha()
code = captcha.generate_code()
img = captcha.draw_captcha(code)
captcha.save_captcha(img)
captcha.show_captcha(img)
这段代码首先实例化一个Captcha对象,然后生成一个随机的验证码字符串,接着在一个新的图像上绘制这个验证码,并将其保存和显示出来。您可以通过修改width、height、char_set和font_path属性来自定义验证码的大小、字符集和字体。
请确保您有arial.ttf这个字体文件在您的脚本所在目录中,或者提供正确的文件路径。如果您想要更复杂的验证码,可以增加噪声点、斜线或者曲线等元素来提高验证码的安全性。