四时宝库

程序员的知识宝库

Python中的验证码类:生成随机文字的图片

在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这个字体文件在您的脚本所在目录中,或者提供正确的文件路径。如果您想要更复杂的验证码,可以增加噪声点、斜线或者曲线等元素来提高验证码的安全性。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接