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里,用脚本批量生成与更换,增强安全性。

上一篇下一篇

猜你喜欢

热点阅读