下面是“python3 pillow生成简单验证码图片的示例”完整攻略:
一、前置知识
在学习本文之前,需要先了解以下知识:
- Python3基础知识
- Python3的Pillow库
二、正文
1. 安装Pillow库
Pillow库是Python中用于图像处理的重要库之一,可以通过pip命令简单安装:
pip install pillow
2. 生成简单验证码
以下示例代码演示如何根据指定参数生成简单验证码图片:
from PIL import Image, ImageDraw, ImageFont
import random
# 图片大小
img_size = (120, 30)
# 验证码的长度和字符集
code_len = 4
code_dict = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
# 验证码字体大小
font_size = 20
# 背景颜色和验证码颜色
bg_color = (255, 255, 255)
code_color = ["black", "blue", "red"]
# 创建一个图片对象
img = Image.new("RGB", img_size, bg_color)
# 获取绘制对象
draw = ImageDraw.Draw(img)
# 加载字体
font = ImageFont.truetype("Arial.ttf", font_size)
# 生成验证码字符串
code_text = ""
for i in range(code_len):
code_text += random.choice(code_dict)
# 将验证码绘制到图片上
draw.text((10, 5), code_text, fill=random.choice(code_color), font=font)
# 保存图片
img.save("captcha.png")
这段代码中,我们通过Pillow库创建了一个指定大小和背景颜色的图片对象,在图片上绘制了一个指定长度和字符集的随机验证码字符串,并将验证码保存为captcha.png文件。
3. 添加干扰线和点
以下示例代码演示如何给验证码图片添加干扰线和点:
from PIL import Image, ImageDraw, ImageFont
import random
# 图片大小
img_size = (120, 30)
# 验证码的长度和字符集
code_len = 4
code_dict = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
# 验证码字体大小
font_size = 20
# 背景颜色和验证码颜色
bg_color = (255, 255, 255)
code_color = ["black", "blue", "red"]
# 创建一个图片对象
img = Image.new("RGB", img_size, bg_color)
# 获取绘制对象
draw = ImageDraw.Draw(img)
# 加载字体
font = ImageFont.truetype("Arial.ttf", font_size)
# 生成验证码字符串
code_text = ""
for i in range(code_len):
code_text += random.choice(code_dict)
# 将验证码绘制到图片上
draw.text((10, 5), code_text, fill=random.choice(code_color), font=font)
# 添加干扰线和点
for i in range(random.randint(0, 5)):
x1 = random.randint(0, img_size[0])
y1 = random.randint(0, img_size[1])
x2 = random.randint(0, img_size[0])
y2 = random.randint(0, img_size[1])
draw.line((x1, y1, x2, y2), fill=random.choice(code_color))
for i in range(random.randint(0, 100)):
draw.point((random.randint(0, img_size[0]), random.randint(0, img_size[1])), fill=bg_color)
# 保存图片
img.save("captcha.png")
这段代码与上一段代码的区别是在绘制验证码文本之后,又添加了一些干扰线和点,使生成的验证码更具辨识度和难度。其中,干扰线是使用draw.line()绘制,点是使用draw.point()绘制。
三、总结
本文主要讲解了如何使用Pillow库生成简单验证码图片,并在此基础上添加了干扰线和点以增加验证码的难度。希望能对Python初学者有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python3 pillow生成简单验证码图片的示例 - Python技术站