利用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()