#!/usr/bin/python3.7
# -*- coding: utf-8 -*-
# @Time : 2019/6/1 15:29
# @Email : jtyoui@qq.com
# @Software: PyCharm
from jtyoui.data.methods import random_lower_char, random_upper_char, random_digits, random_special
from jtyoui.file_zip import sep
import random
[文档]class Captcha:
"""验证码生成器
>>> c = Captcha(300, 60) # 验证码大小是300*60
>>> c.format(lower=1, upper=2, digits=4, special=1) # 有小写字母1个、大写字母2、数字4个、特殊符号1个
>>> c.make_photo(f'D://') # 生成的验证码存放在D盘下
"""
def __init__(self, width=240, height=60):
self.width = width
self.height = height
self.flag = []
self.number = 4
[文档] @staticmethod
def color1():
return random.randint(64, 255), random.randint(64, 255), random.randint(64, 255)
[文档] @staticmethod
def color2():
return random.randint(32, 127), random.randint(32, 127), random.randint(32, 127)
[文档] def make_photo(self, dir_):
"""生成验证码
:param dir_: 存放验证码照片的文件夹
"""
from PIL import Image # 安装pillow: pip install pillow
from PIL import ImageFont
from PIL import ImageDraw
from PIL import ImageFilter
image = Image.new('RGB', (self.width, self.height), (255, 255, 255))
font = ImageFont.truetype('arial.ttf', 36)
draw = ImageDraw.Draw(image)
for w in range(self.width):
for h in range(self.height):
draw.point((w, h), fill=self.color1())
for index, t in enumerate(self.flag):
draw.text(((self.width - 10) // self.number * index + 10, 10), t, font=font, fill=self.color2())
image = image.filter(ImageFilter.BLUR)
image.save(dir_ + sep + ''.join(self.flag) + '.jpg', 'jpeg')
return image
if __name__ == '__main__':
c = Captcha(300, 60) # 验证码大小是300*60
for _ in range(10): # 生成10张验证码
c.format(lower=1, upper=2, digits=4, special=1) # 有小写字母1个、大写字母2、数字4个、特殊符号1个
c.make_photo(r'D://') # 生成的验证码存放在D盘下