python 手动生成验证码图片

利用Python的 pillow模块

引入图片中这些方法,以及random模块

from PIL import Image, ImageDraw, ImageFont, ImageFilter

首先我自己封装了三个方法,

方法一:随机的产生验证码文本的颜色

方法二:随机的产生验证码背景图片的颜色

方法三:随机的产生验证码文本内容

# 文本颜色
def rndColor():
    return (random.randint(64, 256), random.randint(64, 256), random.randint(64, 256))

# 背景颜色

def rndColor2():
    return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127))

# 文本内容

def rndChar():
    return chr(random.randint(65, 90))

通过Image模块生成验证码图片,

利用方法二在验证图片填充颜色,

将生成的的文本内容写到验证码图片,

设置模糊度,

并保存图片

# 生成一张随机数字的图片
image = Image.new("RGB", (width, height), rndColor())
draw = ImageDraw.Draw(image)

# 在背景图片上随机产生的点
for i in range(width):
    for j in range(height):
        draw.point((i, j), fill=rndColor())

# 产生随机,并写在图片上,注意此处的字体要设置为绝对路径
font = ImageFont.truetype(r"C:\Windows\Fonts\Ebrima.ttf", 35)
for i in range(4):
    draw.text((60 * i + 10, 10), rndChar(), font=font, fill=rndColor2())

# 设置图片的模糊度
image = image.filter(ImageFilter.BLUR)

# 保存图片
image.save("./demo.jpg", "jpeg")

下面是用第三方模块,简单快捷的生成验证码

from captcha.image import ImageCaptcha
import random

list = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
        'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
        'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
chars = ''
for i in range(4):
    chars += list[random.randint(0, 62)]
# print(chars)
image = ImageCaptcha().generate_image(chars)
image.show()

猜你喜欢

转载自blog.csdn.net/qq_41292236/article/details/103410770