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中的__init__和__new__
Mar 12 Python
wxpython中Textctrl回车事件无效的解决方法
Jul 21 Python
Python字典简介以及用法详解
Nov 15 Python
代码讲解Python对Windows服务进行监控
Feb 11 Python
python pycurl验证basic和digest认证的方法
May 02 Python
python实现多人聊天室
Mar 31 Python
解决PySide+Python子线程更新UI线程的问题
Jan 11 Python
pandas去重复行并分类汇总的实现方法
Jan 29 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
Feb 10 Python
学python需要去培训机构吗
Jul 01 Python
六种酷炫Python运行进度条效果的实现代码
Jul 17 Python
Django中的DateTimeField和DateField实现
Feb 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
echo, print, printf 和 sprintf 区别
2006/12/06 PHP
简单说说PHP优化那些事(经验分享)
2014/11/27 PHP
Yii2框架类自动加载机制实例分析
2018/05/02 PHP
jquery.AutoComplete.js中文修正版(支持firefox)
2010/04/09 Javascript
jQuery Selector选择器小结
2010/05/06 Javascript
THREE.JS入门教程(5)你应当知道的十件事
2013/01/24 Javascript
验证手机号码的JS方法分享
2013/09/10 Javascript
js加密解密字符串可自定义密码因子
2014/05/13 Javascript
javascript制作的简单注册模块表单验证
2015/04/13 Javascript
javascript实现判断鼠标的状态
2015/07/10 Javascript
javascript的变量、传值、传址、参数之间关系
2015/07/26 Javascript
js实现仿网易点击弹出提示同时背景变暗效果
2015/08/13 Javascript
基于javascript实现tab切换特效
2016/03/29 Javascript
JS实现队列与堆栈的方法
2016/04/21 Javascript
Vue实现一个返回顶部backToTop组件
2017/07/25 Javascript
利用vue组件自定义v-model实现一个Tab组件方法示例
2017/12/06 Javascript
jQuery实现获取选中复选框的值实例详解
2018/06/28 jQuery
VUE 自定义组件模板的方法详解
2019/08/30 Javascript
解决vue 退出动画无效的问题
2020/08/09 Javascript
vue实现把接口单独存放在一个文件方式
2020/08/13 Javascript
[01:38]完美世界DOTA2联赛(PWL)宣传片:第一站
2020/10/26 DOTA
py2exe 编译ico图标的代码
2013/03/08 Python
详解Django中Request对象的相关用法
2015/07/17 Python
学习Python3 Dlib19.7进行人脸面部识别
2018/01/24 Python
用Python爬取QQ音乐评论并制成词云图的实例
2019/08/24 Python
python db类用法说明
2020/07/07 Python
python空元组在all中返回结果详解
2020/12/15 Python
Python中生成ndarray实例讲解
2021/02/22 Python
俄罗斯第一家篮球店:StreetBall
2020/07/30 全球购物
游戏商店:Eneba
2020/04/25 全球购物
中学生期末评语
2014/02/03 职场文书
原料仓管员岗位职责
2014/04/12 职场文书
郭明义观后感
2015/06/08 职场文书
2016年优秀共青团员事迹材料
2016/02/25 职场文书
python用字节处理文件实例讲解
2021/04/13 Python
使用Python脚本对GiteePages进行一键部署的使用说明
2021/05/27 Python