from os import listdir
from PIL import Image, ImageDraw, ImageFont
class MakePicture:
def __init__(self):
self.width = 0
self.height = 0
self.text = ''
def run(self, text):
self.text = text
# 获取验证码图片尺寸
self.get_photo_width()
# 生成空白图片
self.make_white_pic()
# 拼接
self.joint(‘C:\\’)
# 添加文本
self.draw_text()
def get_photo_width(self):
""" 获取验证码图片尺寸"""
self.width, self.height = Image.open("aa.jpg").size
def make_white_pic(self):
""" 生成空白图片"""
img = Image.new('RGB', (self.width, 20), (255, 255, 255))
img.save('bg.jpg')
def joint(self, path):
"""拼接图片"""
# 获取当前文件夹中所有JPG图像
im_list = [Image.open(fn) for fn in listdir(path) if fn.endswith('.jpg')]
# 创建空白长图
result = Image.new(im_list[0].mode, (self.width, self.height + 20))
# 拼接图片
[result.paste(im, box=(0, i * self.height)) for i, im in enumerate(im_list)]
# for i, im in enumerate(im_list):
# result.paste(im, box=(0, i * self.height))
# 保存图片
result.save('code.png')
def draw_text(self):
"""# 添加文本"""
img = Image.open("code.png")
draw = ImageDraw.Draw(img) # 生成绘制对象draw
typeface = ImageFont.truetype('simkai.ttf', 12) # 字体
# text('字体坐标') fill('填充坐标')
draw.text((0, self.height + 5), self.text, fill=(120, 0, 80), font=typeface)
img.save("code.png") # 保存
if __name__ == '__main__':
MakePicture().run("请输入红色文字")
注:aa.jpg - 第一张图片
code.png - 成品图