讲解“Python使用PIL模块生成随机验证码”的完整攻略,包括以下内容:
- 导入PIL模块
- 生成随机验证码
- 绘制验证码图片
- 保存图片
1. 导入PIL模块
我们需要借助PIL(Python Imaging Library)模块实现图片的编辑、生成等功能。为了使用PIL模块,我们需要先安装Pillow。安装命令如下:
pip install Pillow
安装完成后,我们需要在代码中导入该模块。代码如下:
from PIL import Image, ImageDraw, ImageFont
import random
2. 生成随机验证码
我们需要生成一个四位数的随机验证码。生成随机数可以使用Python的random模块,代码如下:
def generate_code(length=4):
code = ''
for i in range(length):
code += str(random.randint(0, 9))
return code
这个函数会生成一个指定长度的随机数,并将其转换为字符串返回。
3. 绘制验证码图片
接下来,我们需要将生成的随机数绘制在验证码图片上。我们可以先创建一个指定大小的空白图像,然后将验证码绘制在上面。具体代码如下:
# 宽高
width, height = 120, 30
# 创建一个图像
image = Image.new('RGB', (width, height), (255, 255, 255))
# 获取绘图对象
draw = ImageDraw.Draw(image)
# 定义字体大小
font_size = int(height * 0.8)
# 定义字体对象
font = ImageFont.truetype('arial.ttf', font_size)
# 绘制字符串
code = generate_code()
text_width, text_height = draw.textsize(code, font)
draw.text(((width - text_width) // 2, (height - text_height) // 2), code, font=font, fill=(0, 0, 0))
这段代码中:
Image.new('RGB', (width, height), (255, 255, 255))
创建一个宽为width
,高为height
,背景为白色的图像。ImageDraw.Draw(image)
获取绘图对象。ImageFont.truetype('arial.ttf', font_size)
创建字体对象。draw.textsize(code, font)
获取字符串code
在使用这个字体对象font
的情况下的大小。draw.text()
绘制字符串。
4. 保存图片
最后一步是将生成的图片保存起来,这可以使用image.save()
方法实现。代码如下:
# 保存图像
image.save('code.png', 'PNG')
这段代码中的第一个参数是保存图片的路径,第二个参数是图片格式,因为这里我们保存为PNG格式,所以这里填写'PNG'
。
这时,运行整段代码,即可生成一个包含指定验证码的图片文件,图片会出现在代码所在的目录下。如果需要多生成几个验证码图片,只需要在代码中加入循环即可,如下:
for i in range(5):
code = generate_code()
image = Image.new('RGB', (width, height), (255, 255, 255))
draw = ImageDraw.Draw(image)
font_size = int(height * 0.8)
font = ImageFont.truetype('arial.ttf', font_size)
text_width, text_height = draw.textsize(code, font)
draw.text(((width - text_width) // 2, (height - text_height) // 2), code, font=font, fill=(0, 0, 0))
image.save('code{}.png'.format(i), 'PNG')
代码中的循环将会生成5个验证码图片,每个文件名中都加了一个数字编号。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python使用PIL模块生成随机验证码 - Python技术站