python使用PIL实现多张图片垂直合并


Posted in Python onJanuary 15, 2019

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

# coding: utf-8 
# image_merge.py 
# 图片垂直合并 
# http://www.redicecn.com 
# redice@163.com 
 
import os 
import Image 
 
def image_resize(img, size=(1500, 1100)): 
  """调整图片大小 
  """ 
  try: 
    if img.mode not in ('L', 'RGB'): 
      img = img.convert('RGB') 
    img = img.resize(size) 
  except Exception, e: 
    pass 
  return img 
 
def image_merge(images, output_dir='output', output_name='merge.jpg', \ 
        restriction_max_width=None, restriction_max_height=None): 
  """垂直合并多张图片 
  images - 要合并的图片路径列表 
  ouput_dir - 输出路径 
  output_name - 输出文件名 
  restriction_max_width - 限制合并后的图片最大宽度,如果超过将等比缩小 
  restriction_max_height - 限制合并后的图片最大高度,如果超过将等比缩小 
  """ 
  max_width = 0 
  total_height = 0 
  # 计算合成后图片的宽度(以最宽的为准)和高度 
  for img_path in images: 
    if os.path.exists(img_path): 
      img = Image.open(img_path) 
      width, height = img.size 
      if width > max_width: 
        max_width = width 
      total_height += height 
 
  # 产生一张空白图 
  new_img = Image.new('RGB', (max_width, total_height), 255) 
  # 合并 
  x = y = 0 
  for img_path in images: 
    if os.path.exists(img_path): 
      img = Image.open(img_path) 
      width, height = img.size 
      new_img.paste(img, (x, y)) 
      y += height 
 
  if restriction_max_width and max_width >= restriction_max_width: 
    # 如果宽带超过限制 
    # 等比例缩小 
    ratio = restriction_max_height / float(max_width) 
    max_width = restriction_max_width 
    total_height = int(total_height * ratio) 
    new_img = image_resize(new_img, size=(max_width, total_height)) 
 
  if restriction_max_height and total_height >= restriction_max_height: 
    # 如果高度超过限制 
    # 等比例缩小 
    ratio = restriction_max_height / float(total_height) 
    max_width = int(max_width * ratio) 
    total_height = restriction_max_height 
    new_img = image_resize(new_img, size=(max_width, total_height)) 
   
  if not os.path.exists(output_dir): 
    os.makedirs(output_dir) 
  save_path = '%s/%s' % (output_dir, output_name) 
  new_img.save(save_path) 
  return save_path 
   
if __name__ == '__main__': 
  image_merge(images=['900-000-000-0501a_b.jpg', '900-000-000-0501b_b.JPG', '1216005237382a_b.jpg'])

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

Python 相关文章推荐
python删除文件示例分享
Jan 28 Python
python自动化测试实例解析
Sep 28 Python
从Python程序中访问Java类的简单示例
Apr 20 Python
Python字符串和字典相关操作的实例详解
Sep 23 Python
python 请求服务器的实现代码(http请求和https请求)
May 25 Python
Python设计模式之桥接模式原理与用法实例分析
Jan 10 Python
django将数组传递给前台模板的方法
Aug 06 Python
Django项目中实现使用qq第三方登录功能
Aug 13 Python
Python网络编程之使用TCP方式传输文件操作示例
Nov 01 Python
python实现打砖块游戏
Feb 25 Python
keras 简单 lstm实例(基于one-hot编码)
Jul 02 Python
python判断元素是否存在的实例方法
Sep 24 Python
python实现多张图片拼接成大图
Jan 15 #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
You might like
php中的时间显示
2007/01/18 PHP
PHP利用func_get_args和func_num_args函数实现函数重载实例
2014/11/12 PHP
WordPress中获取指定分类及其子分类下的文章数目
2015/12/31 PHP
php将服务端的文件读出来显示在web页面实例
2016/10/31 PHP
php实现HTML实体编号与非ASCII字符串相互转换类实例
2016/11/02 PHP
ZendFramework框架实现连接两个或多个数据库的方法
2016/12/08 PHP
php正则表达式基本知识与应用详解【经典教程】
2017/04/17 PHP
购物车实现的几种方式优缺点对比
2018/05/02 PHP
PHP实现的pdo连接数据库并插入数据功能简单示例
2019/03/30 PHP
左侧是表头的JS表格控件(自写,网上没有的)
2013/06/04 Javascript
iframe窗口高度自适应的又一个巧妙实现思路
2014/04/04 Javascript
js限制checkbox选中个数以限制六个为例
2014/07/15 Javascript
Three.js快速入门教程
2016/09/09 Javascript
谈谈target=_new和_blank的不同之处
2016/10/25 Javascript
jQuery UI 实例讲解 - 日期选择器(Datepicker)
2017/09/18 jQuery
JS计算距当前时间的时间差实例
2017/12/29 Javascript
ES6知识点整理之函数对象参数默认值及其解构应用示例
2019/04/17 Javascript
js实现烟花特效
2020/03/02 Javascript
使用js获取身份证年龄的示例代码
2020/12/11 Javascript
Python实现对excel文件列表值进行统计的方法
2015/07/25 Python
Python编程求解二叉树中和为某一值的路径代码示例
2018/01/04 Python
python3+PyQt5泛型委托详解
2018/04/24 Python
python 实现读取一个excel多个sheet表并合并的方法
2019/02/12 Python
Python csv模块使用方法代码实例
2019/08/29 Python
python安装读取grib库总结(推荐)
2020/06/24 Python
推荐WEB开发者最佳HTML5和CSS3代码生成器
2015/11/24 HTML / CSS
请写出一段Python代码实现删除一个list里面的重复元素
2015/12/29 面试题
怎么写自荐书范文
2014/02/12 职场文书
十八大演讲稿
2014/05/22 职场文书
小学数学教学经验交流材料
2014/05/22 职场文书
夫妻双方自愿离婚协议书
2014/10/24 职场文书
敬老院义诊活动总结
2015/05/07 职场文书
学术会议领导致辞
2015/07/29 职场文书
2019最新婚庆对联集锦!
2019/07/10 职场文书
redis调用二维码时的不断刷新排查分析
2022/04/01 Redis
Python 避免字典和元组的多重嵌套问题
2022/07/15 Python