python 多张图片进行横向与纵向的无损拼接,适用于图片宽高差不多的图片
python 进行横向与纵向的图片拼接,适用图片宽高差不多的图片
·
前言
python 进行多张图片横向和纵向的拼接,适用于图片宽高差不多的图片,因为横向拼接会将图片等比例放大到一样的高度在拼接,纵向拼接会将图片等比例放大到一样的宽度再拼接。如果图片分辨率相差太大,将导致长图中每一张原始图片的内容的大小发生改变。
起因
我习惯是某次作业只有一张图,所以要将某次作业的n张照片合并成一张长图。而用的小程序拼接工具拉胯了。
思路
- 首先我的需求是纵向拼接,但是纵向都做了,横向不做有点奇怪,于是打算能进行横向和纵向的拼接
- 直接获取路径里所有图片,包括png、jpg和jepg(有其他格式的可自行补充),sort决定升序降序或者默认读取顺序,然后用pillow库的image读取图片,加进列表
- 进行拼接之前,先获取原始图片中最大的宽和最大的高,据此对所有图片进行等比例放大
- 由于最大的宽和最大的高,不一定在同一个图片出现。所以原始图片经过放大后,宽高发生变化,从而最大宽高也可能发生变化。为简便,长图的最大宽/高直接取了所有可能的宽高的最大值,会导致长图的最后将有空白画布(后面去除),但是至少不会出现画布长度/宽度不够
- 进行拼接。横向长图的高度就是最大高度,然后宽度是最大宽度n(n张图片);纵向长图的宽度是最大宽度,高度是最大高度n;
- 如第五点所说,最后去除空白画布,保存无损长图,完成
效果:
(一时找不到合适的图,翻出了自己拍的作文,图片宽高接近,但不一样)
代码
放在Github
记得改成自己的文件夹,还有合成的长图文件就在原始图片所在文件夹中,如果不喜欢可以换一个文件夹
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献4条内容
所有评论(0)