2019-02-05 验证码生成(1)
2019-02-05 本文已影响0人
翻斗乐园胡图图
最近在学习Python,原来用的是新浪博客写的。。新浪博客不太合适。。不能用Markdown语法(可能是我没找到),再说我以前的博客写的太烂了,账号密码也不记得了囧,所以决定换个地方好好写写,主要是记录下自己学习的过程。
在美团这1年多也确实水了,几乎毫无成长,以前的东西也忘了,决定好好提升自己。
这是我自学python的第一篇文章,对python感兴趣的话可以自己去看一些有趣的教程,我只是把自己学习中遇到问题都记录下来而已。
需要导入pillow模块。。
简单生成一张含4个随机字母的验证码图片
这里贴下代码
from PIL import Image, ImageDraw, ImageFont, ImageFilter
import random
# 随机字母:
def rndChar():
return chr(random.randint(65, 90))
# 随机颜色1:
def rndColor():
return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))
# 随机颜色2:
def rndColor2():
return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127))
# 240 x 60:
width = 60 * 4
height = 60
image = Image.new('RGB', (width, height), (255, 255, 255))
# 创建Font对象:
font = ImageFont.truetype('arial.ttf', 36)
#font = ImageFont.truetype('Arial.ttf', 36)
#教程里的字体WINDOWS系统可能没有,会报no resource错,我这里换了一个
# 创建Draw对象:
draw = ImageDraw.Draw(image)
# 填充每个像素:
for x in range(width):
for y in range(height):
draw.point((x, y), fill=rndColor())
# 输出文字:
s = []
for t in range(4):
s.append(rndChar())
for t in range(4):
draw.text((60 * t + 10, 10), s[t], font=font, fill=rndColor2())
# 模糊:
image = image.filter(ImageFilter.BLUR)
# 保存
image.save('code.jpg', 'jpeg')
#打开
image.show('code.jpg')
后续的思路是把验证码存到redis里,用脚本批量生成与更换,增强安全性。