我们在测试中尤其是终端自动化测试中,经常要求截图保存操作自动化测试的步骤,但是一
个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