详解基于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中处理日期和时间的基本知识点整理汇总
May 22 Python
解决python3在anaconda下安装caffe失败的问题
Jun 15 Python
点球小游戏python脚本
May 22 Python
Python实现的远程登录windows系统功能示例
Jun 21 Python
python3使用pandas获取股票数据的方法
Dec 22 Python
Python docx库用法示例分析
Feb 16 Python
通过pycharm使用git的步骤(图文详解)
Jun 13 Python
Python多重继承之菱形继承的实例详解
Feb 12 Python
40行Python代码实现天气预报和每日鸡汤推送功能
Feb 27 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
Mar 17 Python
python实现FTP循环上传文件
Mar 20 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
Apr 11 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
刚才在简化php的库,结果发现很多东西
2006/12/31 PHP
PHP 设计模式之观察者模式介绍
2012/02/22 PHP
php+ajax实现无刷新的新闻留言系统
2020/12/21 PHP
php+ajax实现仿百度查询下拉内容功能示例
2017/10/20 PHP
laravel 框架实现无限级分类的方法示例
2019/10/31 PHP
javascript 建设银行登陆键盘
2008/06/10 Javascript
兼容FireFox 的 js 日历 支持时间的获取
2009/03/04 Javascript
javascript权威指南 学习笔记之null和undefined
2011/09/25 Javascript
javascript的console.log()用法小结
2012/05/31 Javascript
html的DOM中document对象forms集合用法实例
2015/01/21 Javascript
AngularJS 使用$sce控制代码安全检查
2016/01/05 Javascript
谈一谈js中的执行环境及作用域
2016/03/30 Javascript
js一维数组、多维数组和对象的混合使用方法
2016/04/03 Javascript
Bootstrap 源代码分析(未完待续)
2016/08/17 Javascript
Vue.js基础学习之class与样式绑定
2017/03/20 Javascript
jquery实现异步加载图片(懒加载图片一种方式)
2017/04/24 jQuery
jquery获取img的src值实例介绍
2019/01/16 jQuery
微信小程序如何获取地址
2019/12/24 Javascript
JS数组进阶示例【数组的几种函数用法】
2020/01/16 Javascript
Vue双向数据绑定(MVVM)的原理
2020/10/03 Javascript
Python基于回溯法子集树模板解决找零问题示例
2017/09/11 Python
PyTorch读取Cifar数据集并显示图片的实例讲解
2018/07/27 Python
基于python3的socket聊天编程
2020/02/17 Python
css背景图片的背景裁切、背景透明度、背景变换等效果运用
2012/12/24 HTML / CSS
Java的基础面试题附答案
2016/01/10 面试题
华为c/c++笔试题
2016/01/25 面试题
幼师自我鉴定
2014/02/01 职场文书
幼儿园庆六一活动方案
2014/03/06 职场文书
我爱我的祖国演讲稿
2014/05/04 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
大学生入党群众意见书
2015/06/02 职场文书
运动会通讯稿600字
2015/07/20 职场文书
美容院管理规章制度
2015/08/05 职场文书
烈士陵园扫墓感想
2015/08/07 职场文书
python中sys模块的介绍与实例
2021/04/17 Python
Springboot中如何自动转JSON输出
2022/06/16 Java/Android