ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python构建简单的验证码

2021-02-23 10:59:26  阅读:147  来源: 互联网

标签:randint python image random 验证码 width range 构建 str


此文为自己学习归纳总结:

看此文前提有一定的python经验,忘记此文是从哪里找到的。要是楼主看到勿喷。

导入相关依赖,执行以下代码即可

# 构建一个简单的验证码
import string
import random
from PIL import Image, ImageFont, ImageDraw, ImageFilter


# 生成随机数字或字母
# number 以many参数做循环时,每循环一次,生成number对应个数的数字或字母
# many 将要生成的数字或字母的个数
def get_random(number, many):
    for i in range(many):
        res_str = ""
        for j in range(number):
            n = random.randint(1, 2)  # n==1生成数字,n=2生成字母
            if n == 1:
                num1 = random.randint(0, 9)
                res_str += str(num1)
            else:
                res_str += str(random.choice(string.ascii_letters))
        return res_str


# 随机颜色RGB
def random_color():
    return random.randint(64, 255), random.randint(64, 255), random.randint(64, 255)


# 随机颜色RGB
def random_bgcolor():
    return random.randint(60, 200), random.randint(60, 200), random.randint(60, 200)


if __name__ == '__main__':
    # 字体,字体大小 arial.ttf
    font = ImageFont.truetype('arial.ttf', 36)

    # 图片尺寸
    width = 220
    height = 60

    # 图像生成
    image = Image.new('RGB', (width, height), color='red')

    # 创建绘图对象
    draw = ImageDraw.Draw(image)

    # 填充背景色
    for i in range(width):
        for j in range(height):
            draw.point((i, j), fill=(246, 246, 246))

    # 写入信息
    for i in range(4):
        draw.text((60 * i + 10, 10), get_random(1, 4), font=font, fill=random_color())

    # # 插入干扰线
    # for i in range(2):
    #     x1 = random.randint(0, width)
    #     y1 = random.randint(0, height)
    #     x2 = random.randint(0, width)
    #     y2 = random.randint(0, height)
    #     draw.line((x1, y1, x2, y2), fill=random_bgcolor(), width=1)

    # 添加滤镜
    image = image.filter(ImageFilter.BLUR)

    # 展示图片
    # image.show()

    # 保存
    image.save('./images/code.png')

 

标签:randint,python,image,random,验证码,width,range,构建,str
来源: https://blog.csdn.net/wealth_123450/article/details/113976498

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有