详解基于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中列表(list)操作方法汇总
Aug 18 Python
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
Apr 27 Python
Windows 64位下python3安装nltk模块
Sep 19 Python
Python自动发送邮件的方法实例总结
Dec 08 Python
python+opencv 读取文件夹下的所有图像并批量保存ROI的方法
Jan 10 Python
Python内置random模块生成随机数的方法
May 31 Python
基于python框架Scrapy爬取自己的博客内容过程详解
Aug 05 Python
python批量处理txt文件的实例代码
Jan 13 Python
Pytorch转tflite方式
May 25 Python
如何利用python 读取配置文件
Jan 06 Python
Python爬取网站图片并保存的实现示例
Feb 26 Python
Python爬取某拍短视频
Jun 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 字符截取 解决中文的截取问题,不用mb系列
2009/09/29 PHP
php使用function_exists判断函数可用的方法
2014/11/19 PHP
php采集中国代理服务器网的方法
2015/06/16 PHP
PHP函数实现从一个文本字符串中提取关键字的方法
2015/07/01 PHP
PHP中的流(streams)浅析
2015/07/02 PHP
基于jquery自定义图片热区效果
2012/07/21 Javascript
jQuery.each()用法分享
2012/07/31 Javascript
火狐下table中创建form导致两个table之间出现空白
2013/09/02 Javascript
解决jquery插件冲突的问题
2014/01/23 Javascript
原生JavaScript+LESS实现瀑布流
2014/12/12 Javascript
Javascript基础教程之数组 array
2015/01/18 Javascript
比较常见的javascript中定义函数的区别
2015/11/09 Javascript
理解JavaScript中Promise的使用
2016/01/18 Javascript
bootstrap fileinput完整实例分享
2016/11/08 Javascript
angular和BootStrap3实现购物车功能
2017/01/25 Javascript
node的process以及child_process模块学习笔记
2018/03/06 Javascript
详解Vue CLI3 多页应用实践和源码设计
2018/08/30 Javascript
elementUI多选框反选的实现代码
2019/04/03 Javascript
巧妙运用v-model实现父子组件传值的方法示例
2019/04/07 Javascript
微信小程序实现左滑动删除效果
2020/03/30 Javascript
Vue登录主页动态背景短视频制作
2019/09/21 Javascript
VSCode插件安装完成后的配置(常用配置)
2020/08/24 Javascript
vue swipeCell滑动单元格(仿微信)的实现示例
2020/09/14 Javascript
[01:05:56]Liquid vs VP Supermajor决赛 BO 第二场 6.10
2018/07/04 DOTA
spyder常用快捷键(分享)
2017/07/19 Python
python利用thrift服务读取hbase数据的方法
2018/12/27 Python
Python整数与Numpy数据溢出问题解决
2019/09/11 Python
伦敦著名的运动鞋综合商店:Footpatrol
2019/03/25 全球购物
保荐人的岗位职责
2013/11/19 职场文书
应届毕业生求职信范例分享
2013/12/17 职场文书
技术股份合作协议书
2014/10/05 职场文书
商家认证委托书格式
2014/10/16 职场文书
教师节慰问信
2015/02/15 职场文书
2016年3月份红领巾广播稿
2015/12/21 职场文书
2016年小学感恩节活动总结
2016/04/01 职场文书
MySQL主从搭建(多主一从)的实现思路与步骤
2021/05/13 MySQL