引用PIL模块
效果图展示:
from PIL import ImageDraw,ImageFont
from PIL import Image
import random
from io import BytesIO#在内存中创建
def get_random_color():
color=(random.randint(0,255),random.randint(0,255),random.randint(0,255))
return color
image=Image.new('RGB',(200,30),(255,255,255))
draw=ImageDraw.Draw(image)
for i in range(4):
random_number=str(random.randint(0,9))
random_lower_alpha=chr(random.randint(97,122))
random_upper_alpha=chr(random.randint(65,90))
rand_python=random.choice([random_number,random_lower_alpha,random_upper_alpha])
draw.text((i*50+10,0),rand_python,get_random_color(),font=ImageFont.truetype('1.ttf',28),align='center')
for i in range(4):#制造线
x1=random.randint(0,200)
y1=random.randint(0,30)
x2=random.randint(0,200)
y2=random.randint(0,30)
draw.line([(x1,y1),(x2,y2)],fill=get_random_color())
for i in range(100):#制造点
x1=random.randint(0,200)
y1=random.randint(0,30)
x2=random.randint(0,200)
y2=random.randint(0,30)
draw.point([(x1,y1),(x2,y2)],fill=get_random_color())
f=open('验证码.jpg','wb')
image.save(f)
f.close()
#以下是在内存中创建验证码,比在磁盘上创建速度快
# f=BytesIO()
# image.save(f,'jpg')
# data=f.getvalue()
# f.close()