python实现多张图片拼接成大图


Posted in Python onJanuary 15, 2019

本文实例为大家分享了python实现多张图片拼接成大图的具体代码,供大家参考,具体内容如下

上次爬取了马蜂窝的游记图片,并解决了PIL模块的导入问题,现在直奔主题吧:

import PIL.Image as Image
import os
 
IMAGES_PATH = 'D:\Mafengwo\photo\五月坦桑的暖风,非洲原野的呼唤\\' # 图片集地址
IMAGES_FORMAT = ['.jpg', '.JPG'] # 图片格式
IMAGE_SIZE = 256 # 每张小图片的大小
IMAGE_ROW = 5 # 图片间隔,也就是合并成一张图后,一共有几行
IMAGE_COLUMN = 4 # 图片间隔,也就是合并成一张图后,一共有几列
IMAGE_SAVE_PATH = 'final.jpg' # 图片转换后的地址
 
# 获取图片集地址下的所有图片名称
image_names = [name for name in os.listdir(IMAGES_PATH) for item in IMAGES_FORMAT if
    os.path.splitext(name)[1] == item]
 
# 简单的对于参数的设定和实际图片集的大小进行数量判断
if len(image_names) != IMAGE_ROW * IMAGE_COLUMN:
 raise ValueError("合成图片的参数和要求的数量不能匹配!")
 
# 定义图像拼接函数
def image_compose():
 to_image = Image.new('RGB', (IMAGE_COLUMN * IMAGE_SIZE, IMAGE_ROW * IMAGE_SIZE)) #创建一个新图
 # 循环遍历,把每张图片按顺序粘贴到对应位置上
 for y in range(1, IMAGE_ROW + 1):
  for x in range(1, IMAGE_COLUMN + 1):
   from_image = Image.open(IMAGES_PATH + image_names[IMAGE_COLUMN * (y - 1) + x - 1]).resize(
    (IMAGE_SIZE, IMAGE_SIZE),Image.ANTIALIAS)
   to_image.paste(from_image, ((x - 1) * IMAGE_SIZE, (y - 1) * IMAGE_SIZE))
 return to_image.save(IMAGE_SAVE_PATH) # 保存新图
image_compose() #调用函数

前边设置了很多变量,都很直观,然后时获取图片的名称以及对需要拼接图片的数量进行检查,比如你要拼接5*5的大图,那就需要25张图片,最后是我们的主函数,依次遍历,主要还是利用了Image模块的强大功能,我们需要做的就是无缝对接。

效果如下:

python实现多张图片拼接成大图

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python代码制作configure文件示例
Jul 28 Python
Anaconda多环境多版本python配置操作方法
Sep 12 Python
利用python的socket发送http(s)请求方法示例
May 07 Python
深入理解Python中的 __new__ 和 __init__及区别介绍
Sep 17 Python
python学习之hook钩子的原理和使用
Oct 25 Python
Python命名空间的本质和加载顺序
Dec 17 Python
一篇文章弄懂Python中所有数组数据类型
Jun 23 Python
python定时任务 sched模块用法实例
Nov 04 Python
python多线程使用方法实例详解
Dec 30 Python
浅谈PyTorch的可重复性问题(如何使实验结果可复现)
Feb 20 Python
利用keras使用神经网络预测销量操作
Jul 07 Python
python uuid生成唯一id或str的最简单案例
Jan 13 Python
解决新版Pycharm中Matplotlib图像不在弹出独立的显示窗口问题
Jan 15 #Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
Jan 15 #Python
Python数据可视化之画图
Jan 15 #Python
python实现在遍历列表时,直接对dict元素增加字段的方法
Jan 15 #Python
Python txt文件加入字典并查询的方法
Jan 15 #Python
Python XML转Json之XML2Dict的使用方法
Jan 15 #Python
python utc datetime转换为时间戳的方法
Jan 15 #Python
You might like
thinkphp 一个页面使用2次分页的实现方法
2013/07/15 PHP
PHP GD库生成图像的几个函数总结
2014/11/19 PHP
php连接oracle数据库及查询数据的方法
2014/12/29 PHP
Laravel模板引擎Blade中section的一些标签的区别介绍
2015/02/10 PHP
php基于PDO连接MSSQL示例DEMO
2016/07/13 PHP
PHP序列化的四种实现方法与横向对比
2018/11/29 PHP
PHP连接SQL Server的方法分析【基于thinkPHP5.1框架】
2019/05/06 PHP
使用prototype.js进行异步操作
2007/02/07 Javascript
json简单介绍
2008/06/10 Javascript
Javascript 复制数组实现代码
2009/11/26 Javascript
可以将word转成html的js代码
2010/04/11 Javascript
ajax不执行success回调而是执行了error回调
2012/12/10 Javascript
js日期对象兼容性的处理方法
2014/01/28 Javascript
Select标签下拉列表二级联动级联实例代码
2014/02/07 Javascript
livereload工具实现前端可视化开发【推荐】
2016/12/23 Javascript
js正则表达式最长匹配(贪婪匹配)和最短匹配(懒惰匹配)用法分析
2016/12/27 Javascript
详解node.js平台下Express的session与cookie模块包的配置
2017/04/26 Javascript
bootstrap paginator分页前后台用法示例
2017/06/17 Javascript
Bootstrap模态框插入视频的实现代码
2017/06/25 Javascript
vue实现中部导航栏布局功能
2019/07/30 Javascript
vue输入框使用模糊搜索功能的实现代码
2020/05/26 Javascript
[01:16:13]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第一场 2月22日
2021/03/11 DOTA
python实现SMTP邮件发送功能
2020/06/16 Python
Python初学时购物车程序练习实例(推荐)
2017/08/08 Python
Python基础练习之用户登录实现代码分享
2017/11/08 Python
详解django中url路由配置及渲染方式
2019/02/25 Python
Python 保持登录状态进行接口测试的方法示例
2019/08/06 Python
python字符串反转的四种方法详解
2019/12/02 Python
如何在scrapy中捕获并处理各种异常
2020/09/28 Python
python开发一个解析protobuf文件的简单编译器
2020/11/17 Python
举例说明类变量和实例变量的区别
2016/06/30 面试题
幼儿教师师德师风自我剖析材料
2014/09/29 职场文书
2014年施工员工作总结
2014/11/18 职场文书
幼儿园亲子活动感想
2015/08/07 职场文书
Vue3 Composition API的使用简介
2021/03/29 Vue.js
什么是Python装饰器?如何定义和使用?
2022/04/11 Python