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

Posted luoman

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python工具类之PIL.Image库快速实现多图拼接相关的知识,希望对你有一定的参考价值。

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

具体代码如下

```python
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

以上是关于Python工具类之PIL.Image库快速实现多图拼接的主要内容,如果未能解决你的问题,请参考以下文章

python中用Pillow库进行图片处理

Python 图像库因消息“解码器 JPEG 不可用”而失败 - PIL

如何在 Python 3 中将 QImage(QPixmap) 转换为 PIL Image?

Python PIL, Image生成验证图片

python中PIL.Image和OpenCV图像格式相互转换

python PIL Image图片裁剪