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


Posted in Python onSeptember 26, 2019

半年前写过一篇将多张图片拼接成大图的博客,是讲的把所有图片先转换为256×256的图片后再进行拼接,今天看到一个朋友的评论说如何拼接非正方形图片,如47×57,之前有个朋友也问过这个,我当时理解错了,以为是要把不同尺寸的照片如32×45、56×75等拼接成大图,当时还纳闷,那不是很难看吗,还得填充非图片元素,emmm,只怪当年太天真。。

于是乎搞了下非方形图片的拼接,上代码:

#!/usr/bin/env python 
# -*- coding:utf-8 -*-
 
import PIL.Image as Image
 
import os
 
IMAGES_PATH = 'D:\Mafengwo\photo\五月坦桑的暖风,非洲原野的呼唤\\' # 图片集地址
 
IMAGES_FORMAT = ['.jpg', '.JPG'] # 图片格式
 
IMAGE_SIZE_W = 47 # 每张小图片的宽
IMAGE_SIZE_H = 57 # 每张小图片的高
 
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_W, IMAGE_ROW * IMAGE_SIZE_H)) # 创建一个新图
 
  # 循环遍历,把每张图片按顺序粘贴到对应位置上
 
  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_W, IMAGE_SIZE_H), Image.ANTIALIAS)#重塑(统一)照片的大小
 
      to_image.paste(from_image, ((x - 1) * IMAGE_SIZE_W, (y - 1) * IMAGE_SIZE_H))
      # im.paste(image, position)---粘贴image到im的position(左上角)位置。
 
  return to_image.save(IMAGE_SAVE_PATH) # 保存新图
 
 
image_compose() # 调用函数

对比之前的博客,没有改动太多,只是太久没看了,又梳理了一遍,把之前的方形图片的边长IMAGE_SIZE拆分成了矩形的长和宽,当然习惯称之为高和宽

这里需要注意的就是下面两处用到IMAGE_SIZE_W和IMAGE_SIZE_H的地方,注释已经说清楚了,我们先是把需要拼接的各种尺寸的图片统一塑形为47×57大小的图片,然后依次粘贴到我们创建的新图中,这里的paste方法中位置指的是图片的左上角,从该处粘贴一张IMAGE_SIZE_W×IMAGE_SIZE_H大小的图片,他这个顺序就是从第一行开始依次粘贴,只不过位置是从0开始的,可以理解成一次粘贴到(0,0),(0,1),(0,2)…………(1,0),(1,1)…………位置上,区别的就是我们这里粘贴的不是一个点而是一张有宽高的图片,所以第一张图片粘贴位置是(0,0),第二张是(IMAGE_SIZE_W,0),第三张是(IMAGE_SIZE_W*2,0)就这么先搞定第一行再走第二行,一直这么下去。。

还是原来的图片,看下不同的效果:

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

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

Python 相关文章推荐
布同 统计英文单词的个数的python代码
Mar 13 Python
python使用正则表达式分析网页中的图片并进行替换的方法
Mar 26 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
May 11 Python
Python实现读取Properties配置文件的方法
Mar 29 Python
如何用Python合并lmdb文件
Jul 02 Python
python3实现钉钉消息推送的方法示例
Mar 14 Python
pyqt5 comboBox获得下标、文本和事件选中函数的方法
Jun 14 Python
Win10系统下安装labelme及json文件批量转化方法
Jul 30 Python
基于python traceback实现异常的获取与处理
Dec 13 Python
PyTorch加载自己的数据集实例详解
Mar 18 Python
Python爬虫爬取百度搜索内容代码实例
Jun 05 Python
pytorch交叉熵损失函数的weight参数的使用
May 24 Python
Python容器使用的5个技巧和2个误区总结
Sep 26 #Python
通过python3实现投票功能代码实例
Sep 26 #Python
Python编写打字训练小程序
Sep 26 #Python
Python 如何优雅的将数字转化为时间格式的方法
Sep 26 #Python
python3.7实现云之讯、聚合短信平台的短信发送功能
Sep 26 #Python
python 模拟创建seafile 目录操作示例
Sep 26 #Python
python RC4加密操作示例【测试可用】
Sep 26 #Python
You might like
完美解决thinkphp唯一索引重复时出错的问题
2017/03/31 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
弹出广告特效代码(一个IP只弹出一次)
2007/05/11 Javascript
JavaScript this 深入理解
2009/07/30 Javascript
关于IE BUG与字符串截取substr的解决办法
2013/04/10 Javascript
jqplot通过ajax动态画折线图的方法及思路
2013/12/08 Javascript
Jquery动态添加输入框的方法
2015/05/29 Javascript
jQuery实现自动调整字体大小的方法
2015/06/15 Javascript
tuzhu_req.js 实现仿百度图片首页效果
2015/08/11 Javascript
Bootstrap每天必学之折叠(Collapse)插件
2016/04/25 Javascript
BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)
2016/08/18 Javascript
JS判断键盘是否按的回车键并触发指定按钮点击操作的方法
2017/02/13 Javascript
javascript定时器取消定时器及优化方法
2017/07/08 Javascript
Vue数组更新及过滤排序功能
2017/08/10 Javascript
vue 使用eventBus实现同级组件的通讯
2018/03/02 Javascript
vue.js 添加 fastclick的支持方法
2018/08/28 Javascript
NodeJS加密解密及node-rsa加密解密用法详解
2018/10/12 NodeJs
[01:18]DOTA2超级联赛专访hanci ForLove淘汰感言曝光
2013/06/04 DOTA
python排序方法实例分析
2015/04/30 Python
Windows环境下python环境安装使用图文教程
2018/03/13 Python
Python转换时间的图文方法
2019/07/01 Python
python3.7 使用pymssql往sqlserver插入数据的方法
2019/07/08 Python
python绘制雪景图
2019/12/16 Python
Python进程Multiprocessing模块原理解析
2020/02/28 Python
详解Python中的GIL(全局解释器锁)详解及解决GIL的几种方案
2021/01/29 Python
HolidayLettings英国:预订最好的度假公寓、别墅和自助式住宿
2019/08/27 全球购物
澳大利亚香水在线商店:City Perfume
2020/09/02 全球购物
C/C++程序员常见面试题二
2015/11/19 面试题
幼儿师范毕业生自荐信
2013/11/09 职场文书
高中毕业自我鉴定
2013/12/16 职场文书
《七颗钻石》教学反思
2014/02/28 职场文书
幼儿园教师个人总结
2015/02/05 职场文书
领导欢送会主持词
2015/07/06 职场文书
小学数学教师研修日志
2015/11/13 职场文书
学前班教学反思
2016/02/24 职场文书
css3 选择器
2022/05/11 HTML / CSS