码迷,mamicode.com
首页 > 编程语言 > 详细

python生成图片验证码

时间:2018-04-12 20:58:19      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:nbsp   close   alpha   python   ssi   ttf   bytes   har   生成   

import PIL

from PIL import Image
from PIL import ImageDraw,ImageFont
import random
def get_random_color():
return (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))


image = Image.new("RGB", (250, 40), get_random_color())

# 生成五个随机字符
draw=ImageDraw.Draw(image)
font=ImageFont.truetype("blog/static/font/kumo.ttf",size=32)
temp=[]
for i in range(5):
random_num=str(random.randint(0,9))
random_low_alpha=chr(random.randint(97,122))
random_upper_alpha=chr(random.randint(65,90))
random_char=random.choice([random_num,random_low_alpha,random_upper_alpha])
draw.text((24+i*36,0),random_char,get_random_color(),font=font)

# 保存随机字符
temp.append(random_char)

# 噪点噪线
# width=250
# height=40
# for i in range(100):
# x1=random.randint(0,width)
# x2=random.randint(0,width)
# y1=random.randint(0,height)
# y2=random.randint(0,height)
# draw.line((x1,y1,x2,y2),fill=get_random_color())
#
# for i in range(400):
# draw.point([random.randint(0, width), random.randint(0, height)], fill=get_random_color())
# x = random.randint(0, width)
# y = random.randint(0, height)
# draw.arc((x, y, x + 4, y + 4), 0, 90, fill=get_random_color())

# 在内存生成图片
from io import BytesIO
f = BytesIO()
image.save(f,"png")
data = f.getvalue()
f.close()

 

# ["a","2","2","s"]
valid_str="".join(temp) # "a22s"
print("valid_str",valid_str)

request.session["valid_str"]=valid_str

return HttpResponse(data)

python生成图片验证码

标签:nbsp   close   alpha   python   ssi   ttf   bytes   har   生成   

原文地址:https://www.cnblogs.com/wanglongtai/p/8810104.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!