编写程序,生成包含6个字符随机内容的验证码图片。 • 代码主要步骤: ① 创建空白图像和绘图对象 ② 生成并计算随机字符串的宽度和高度 ③ 绘制随机字符串中的字符 ④ 对像素位置进行微调,实现扭曲的效果 ⑤ 绘制随机颜色随机位置的干扰像素 ⑥ 绘制 8条随机干扰直线 ⑦ 绘制 8条随机弧线 ⑧ 保存并显示图片
时间: 2024-03-13 19:42:58 浏览: 13
以下是基于 Python 语言实现的生成验证码图片的程序代码:
```python
import random
import string
from PIL import Image, ImageDraw, ImageFont, ImageFilter
# 随机字符串
def random_str():
return ''.join(random.sample(string.ascii_letters + string.digits, 6))
# 随机颜色
def random_color():
return (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
# 生成验证码图片
def generate_code_img():
# 图片大小
width = 150
height = 50
# 创建空白图像和绘图对象
img = Image.new('RGB', (width, height), (255, 255, 255))
draw = ImageDraw.Draw(img)
# 字体样式
font = ImageFont.truetype('arial.ttf', 40)
# 生成随机字符串并计算其宽度和高度
code = random_str()
code_width, code_height = draw.textsize(code, font)
# 绘制随机字符串中的字符
for i in range(6):
draw.text((i * 25 + 10, 5), code[i], font=font, fill=random_color())
# 对像素位置进行微调,实现扭曲的效果
for x in range(width):
for y in range(height):
draw.point((x + random.randint(-5, 5), y + random.randint(-5, 5)), fill=(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)))
# 绘制随机颜色随机位置的干扰像素
for i in range(150):
draw.point((random.randint(0, width), random.randint(0, height)), fill=random_color())
# 绘制随机干扰直线
for i in range(8):
x1 = random.randint(0, width)
y1 = random.randint(0, height)
x2 = random.randint(0, width)
y2 = random.randint(0, height)
draw.line((x1, y1, x2, y2), fill=random_color(), width=2)
# 绘制随机弧线
for i in range(8):
x = random.randint(0, width)
y = random.randint(0, height)
draw.arc((x, y, x + 30, y + 30), 0, 90, fill=random_color())
# 模糊处理
img = img.filter(ImageFilter.BLUR)
# 保存并显示图片
img.save('code_img.png')
img.show()
if __name__ == '__main__':
generate_code_img()
```
运行上述程序,即可生成包含6个字符随机内容的验证码图片。