zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    微信小程序promise解决onload异步
    小程序中使用 Less (VScode)
    Vue中使用less
    小程序获取 图片宽高
    ssh 登录出现Are you sure you want to continue connecting (yes/no)?解决方法
    SQL SERVER 收缩日志
    SQL SERVER-日期时间
    oracle判断查询结果是否为空
    修改Tomcat默认JDK版本
    Microsoft SQL Server Management Studio ------- 附加数据库 对于 服务器“xxx"失败(错误码5120)
  • 原文地址:https://www.cnblogs.com/luoman/p/12584320.html
Copyright © 2011-2022 走看看