前言

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

起因

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

思路

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

效果:

(一时找不到合适的图,翻出了自己拍的作文,图片宽高接近,但不一样)

代码

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

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

  1. 不固定图片宽高瀑布流_图片横向等高瀑布流,每行占满,限制行数 的实现

    图片的横向瀑布流,其实简单地按顺序排列就可以了 但要实现每行中各图片都等高(各行不一定等高,但每行里面等高),且每行都占满,就需要用到flex的特性了 控制每行图片高度都一致,可能会影响图片的比例,所 ...

  2. 不固定图片宽高瀑布流_类百度图片的固定高度横向瀑布流js方法及纯css实现的方法记录...

    微信图片_20190117105118.png 纯css实现代码: Document div{ display: flex;/*显示模式设置为弹性盒子*/ flex-wrap: wrap;/*进行强制 ...

  3. python --获取图片宽高

    from PIL import Imageimg = Image.open(f'{BASE_DIR}/media/moren.jpg')width = img.size[0] # 宽 height = ...

  4. python两张图片无缝合成一张_详解基于python的多张不同宽高图片拼接成大图

    #!/usr/bin/env python # -*- coding:utf-8 -*- import PIL.Image as Image import os IMAGES_PATH = 'D:Ma ...

  5. 基于python的多张不同宽高图片拼接成大图

    半年前写过一篇将多张图片拼接成大图的博客,是讲的把所有图片先转换为256×256的图片后再进行拼接,今天看到一个朋友的评论说如何拼接非正方形图片,如47×57,之前有个朋友也问过这个,我当时理解错了, ...

  6. Python OpenCV:利用滚动条移动图片,利用鼠标缩放图片

    Python OpenCV:利用滚动条移动图片,利用鼠标缩放图片 一.实现目标 二.实现背景 三.实现方法 四.运行环境 五.运行代码 六.运行结果 七.不足 八.参考 一.实现目标   在OpenC ...

  7. python实现两张图片横向和纵向拼接

    本文实例为大家分享了python实现图片横向和纵向拼接的具体代码, 这里主要用Python扩展库pillow中Image对象的paste()方法把两张图片拼接起来供大家参考,具体内容如下: 一.代码: ...

  8. python图片横向合并_python实现图片横向和纵向拼接

    本文实例为大家分享了python实现图片横向和纵向拼接的具体代码,供大家参考,具体内容如下 直接上代码: # -*- coding:utf-8 -*- __author__ = 'ShawDa' fr ...

  9. 利用 python 实现多张图片的无损拼接

    利用 python 实现多张图片的无损拼接 以下两段是作者的心路历程,图个乐的可以看一看,想学干货可以直接略过. 导入 python 库 查看需要拼接的图片 横向拼接 保存拼接后的图片 总结 纵向拼接 ...

最新文章

  1. Understanding G1 GC Logs--转载
  2. Netty源码 服务端的启动
  3. 判断一个变量是不是数组
  4. shell脚本报错:-bash: xxx: /bin/sh^M: bad interpreter: No such file or directory
  5. python刷抖音_用Python生成抖音字符视频!
  6. C语言字符串数字提取函数,支持负数、浮点数、科学记数法
  7. B - Friends
  8. esp8266驱动_【直播视频】微信小程序连接阿里云物联网控制esp8266实现rgb调节。...
  9. Unity 和腾讯游戏成立联合创新实验室:从技术创新探索游戏产品新模式和概念
  10. System.IO命名空间
  11. 如何批量Ping 1000个IP地址,一个小技巧节约N小时?
  12. 显著性分析-秩和检验与校正
  13. MAC wps中选中的页面和缩放打印
  14. 二十一世纪大学英语读写教程学习笔记(原文)——2 - Conversational Ballgames(对话风格与球类运动)
  15. [Deeplearning]对比散度算法(CD算法)
  16. box2d的部分心得
  17. 【文智背后的奥秘】系列篇——情感分类
  18. pacemaker+nginx+iscsi实现的nginx服务远程储存高可用
  19. 【考研英语语法】定语从句全面介绍
  20. 表单验证与自定义表单验证

热门文章

  1. Untiy 帧同步的探索之路一 位置帧同步
  2. 商业解决方案策划专家(区块链)
  3. 炸弹人 html5,HTML5再显威力 与全世界一起玩炸弹人
  4. Caused by: javax.websocket.DeploymentException: Cannot deploy POJO class
  5. 误删除的图片怎么恢复?
  6. springboot配置日志格式化输出到文件
  7. python下列合法的变量名是什么,python中的合法变量名有什么规则-Python教程
  8. 浪潮云:国内第一个吃螃蟹的数据云
  9. python中的鸡兔同笼
  10. python 麦克风人声检测_如何选择最适合自己的人声麦克风?