python 多张图片进行横向与纵向的无损拼接,适用于图片宽高差不多的图片

前言

python 进行多张图片横向和纵向的拼接,适用于图片宽高差不多的图片,因为横向拼接会将图片等比例放大到一样的高度在拼接,纵向拼接会将图片等比例放大到一样的宽度再拼接。如果图片分辨率相差太大,将导致长图中每一张原始图片的内容的大小发生改变。

起因

我习惯是某次作业只有一张图,所以要将某次作业的n张照片合并成一张长图。而用的小程序拼接工具拉胯了。

思路
  1. 首先我的需求是纵向拼接,但是纵向都做了,横向不做有点奇怪,于是打算能进行横向和纵向的拼接
  2. 直接获取路径里所有图片,包括png、jpg和jepg(有其他格式的可自行补充),sort决定升序降序或者默认读取顺序,然后用pillow库的image读取图片,加进列表
  3. 进行拼接之前,先获取原始图片中最大的宽和最大的高,据此对所有图片进行等比例放大
  4. 由于最大的宽和最大的高,不一定在同一个图片出现。所以原始图片经过放大后,宽高发生变化,从而最大宽高也可能发生变化。为简便,长图的最大宽/高直接取了所有可能的宽高的最大值,会导致长图的最后将有空白画布(后面去除),但是至少不会出现画布长度/宽度不够
  5. 进行拼接。横向长图的高度就是最大高度,然后宽度是最大宽度n(n张图片);纵向长图的宽度是最大宽度,高度是最大高度n;
  6. 如第五点所说,最后去除空白画布,保存无损长图,完成
效果:

(一时找不到合适的图,翻出了自己拍的作文,图片宽高接近,但不一样)
python 多张图片进行横向与纵向的无损拼接,适用于图片宽高差不多的图片_第1张图片
python 多张图片进行横向与纵向的无损拼接,适用于图片宽高差不多的图片_第2张图片

代码

放在Github
记得改成自己的文件夹,还有合成的长图文件就在原始图片所在文件夹中,如果不喜欢可以换一个文件夹

你可能感兴趣的:(#,Python,python,开发语言)