美文网首页
2019-02-05 验证码生成(1)

2019-02-05 验证码生成(1)

作者: 翻斗乐园胡图图 | 来源:发表于2019-02-05 23:27 被阅读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里,用脚本批量生成与更换,增强安全性。

    相关文章

      网友评论

          本文标题:2019-02-05 验证码生成(1)

          本文链接:https://www.haomeiwen.com/subject/cihbsqtx.html