Python工具类之PIL.Image库快速实现多图拼接

我们在测试中尤其是终端自动化测试中,经常要求截图保存操作自动化测试的步骤,但是一
个case多个图片,查看起来很麻烦,这里提供一个思路,那就是将多个图片拼接起来,
弄成一张图片,可以**合成N*M宫格,如果图片不够,自动白色填空**

具体代码如下

class ImageUtils(object):
    @staticmethod
    def image_compose(imgDir, picWidth, picHigh, savePath, row=1, column=1):
        '''
        :param imgDir: 图片路径
        :param picWidth: 缩放图宽带
        :param picHigh: 缩放图高度
        :param savePath: 保存路径
        :param row: x 行
        :param column: x 列
        :return:
        '''
        IMAGES_FORMAT = ['.png', '.PNG', '.jpg', ".JPG"]  # 图片格式
        # 获取图片集地址下的所有图片名称
        image_names = [name for name in os.listdir(imgDir) for item in IMAGES_FORMAT if
                       os.path.splitext(name)[1] == item]
        # 定义图像拼接函数
        to_image = Image.new('RGB', (column * picWidth, row * picHigh))  # 创建一个新图
        # 循环遍历,把每张图片按顺序粘贴到对应位置上
        from_image = None
        for y in range(1, row + 1):
            for x in range(1, column + 1):
                if column * (y - 1) + x - 1 > len(image_names) - 1:
                    from_image = Image.new('RGB', (picWidth, picHigh), (255, 255, 255))
                else:
                    from_image = Image.open(imgDir + image_names[column * (y - 1) + x - 1]).resize(
                        (picWidth, picHigh), Image.ANTIALIAS)
                to_image.paste(from_image, ((x - 1) * picWidth, (y - 1) * picHigh))

        return to_image.save(savePath)  # 保存新图
        
if __name__ == "__main__":
    ImageUtils.image_compose(os.getcwd() + "/image/" ,360,640,'111.jpg',4,4)

来看下最终运行效果,下图是我在实现一个游戏辅助脚本外挂中用的,将辅助操作的执行步骤全部保存,最后合成一张图片,

 更多技术交流请加QQ群:1085210541

原文地址:https://www.cnblogs.com/luoman/p/12584320.html