在执行这个代码的时候需要进行安装模块
pip install pillow
from random import randint,choice
from PIL import Image , ImageDraw , ImageFont
# 制作随机验证码:数字,大小写字母
def get_random_code():
# 随机数字
number = str(randint(0 , 9))
# 随机大写字母
upper = chr(randint(65 , 90))
# 随机小写字母
lower = chr(randint(97 , 122))
# 再生成的大小写字母和数字中再次随机获取一个
code = choice([number , upper , lower])
return code
# 获取随机颜色
def get_color():
return randint(0, 255),randint(0, 255),randint(0, 255)
# 制作图片
def create_image():
# 创建图片对象
image = Image.new(mode='RGB' , size=(120 , 30) , color=get_color())
# 创建画笔工具
draw = ImageDraw.Draw(image)
# 设置字体,导入字体问题件,设置字体大小
font = ImageFont.truetype("font/AdobeFanHeitiStd-Bold.otf" , 24)
# 制作图片噪点
# 噪点
for i in range(100):
# point([x , y] , 颜色)
draw.point([randint(0,120) , randint(0,30)] , fill=get_color())
# 噪线
for i in range(15):
# line([起始x , y,终止x, y] , 颜色)
draw.line([randint(0,120) , randint(0,30) , randint(0,120) , randint(0,30)] , fill=get_color())
# 噪线:弧线
x = randint(0, 120)
y = randint(0, 30)
for i in range(10):
# line([起始x , y,终止x, y] ,0 ,90, 颜色)
draw.arc([x , y , x+1 , y+1], 0 , 90, fill=get_color())
# 生成验证码
for i in range(4):
code = get_random_code()
# 将获取到的验证码写入到图片中
draw.text((10+30*i , 2) , text=code , fill=get_color() , font=font)
# 将图片对象保存为文件
f = open('yzm.png' , 'wb')
image.save(f , format='png')
f.close()
create_image()
这里我的代码设置的宽度是30为一个字母的空间,还有这里是要导入font文件的,放到font文件夹中。
这是文件的目录:
这是效果图: