图片拼接-python

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 - 成品图

你可能感兴趣的:(图片拼接-python)