环境:
win10、python2.7、PIL

需求:
使用python语言+PIL图片处理库实现美图秀秀App版本图片拼接功能;将多张图片按照统一宽度1000px进行缩放,拉伸后,按照从上到下的顺序拼接为一张长图。

效果:
原始的2张图片

拼接之后的图片

思路:
1,PIL库实现图片的大小处理

def resize():im = Image.open(path) #path 为图片地址width, height = im.size #获取图片分辨率heightNew = int(height/(width/1000.0)) #计算resize之后的新高度imResized = im.resize((1000,heightNew),Image.ANTIALIAS) #im.resize(新尺寸,拉伸模式); 新的分辨率只能是整数#拉伸模式参数为可选,默认空值处理后的图片质量较低;Image.ANTIALIAS 质量高

2,将处理后的图片拷贝到最终生成的目标图片

def paste():finalImage = Image.new('RGBA',(width,height)) #width, height 为新图片的分辨率im = Image.open(path) #原始图片Image对象#将原始图片拷贝到新图片中;(x,y)表示原始图片的左上角在新图片中的位置;图片左上角的坐标值为(0,0)finalImage.paste(im,(x,y))finalImage.save(save_path) #save_path 新图片的地址;例如:D:\\pic\\pic_new.png

完整代码:

#coding:utf-8
import PIL.Image as Image
import os
import datetime#获取指定目录下的所有文件的绝对路径
def getPicPathList(directory):fileNames = os.listdir(directory)picPathList = []for fileName in fileNames:picPathList.append(os.path.join(directory,fileName))return picPathList#传入文件的绝对路径,默认图片格式都为png格式, 生成拼接后的图片
def mergePic(picPathList, mergedPicPath):sumHeight = 0 #获取缩放之后的新图片整体高度for path in picPathList:im = Image.open(path)width, height = im.sizeheight = height/(width/1000.0)sumHeight = sumHeight + int(height)finalImage = Image.new('RGBA',(1000,sumHeight))currentY = 0 #下一张要粘贴到新图片的原始图,在新图片中的Y坐标for path in picPathList:im = Image.open(path)width, height = im.size#图片拉伸heightNew = int(height/(width/1000.0))imResized = im.resize((1000,heightNew),Image.ANTIALIAS)#粘贴到最终生成的图上finalImage.paste(imResized,(0,currentY))currentY = currentY +heightNew#保存图片finalImage.save(mergedPicPath)#---------------main start-----------------------
pic_dir = "D:\\test" #要合并的图片存放的文件夹路径
# pic_dir = unicode(pic_dir,'utf-8') #pyhton2.7,如果路径中包含中文需要进行unicode转码
picPathList = getPicPathList(pic_dir) #新图片保存到要合并截图的文件夹目录,当前时间命名
now_time = datetime.datetime.now();
fileName = now_time.strftime('%Y%m%d%H%M%S') + '.png' #根据当前时间生成新图片名称;
mergedPicPath = os.path.join(pic_dir, fileName) #合并完成之后新图片的路径
mergePic(picPathList,mergedPicPath)
#---------------main end-----------------------

注意:
1,默认要合并的文件夹中的图片都为.png格式,最终生成的图片也固定为.png图片;暂时没有对合并文件夹中多种图片格式做处理,以及图片文件的筛选;建议原始图片和最终生成的图片格式一致;
2,pyhton2.7,如果路径中包含中文需要进行unicode转码

参考链接:
Python图像库PIL的类Image及其方法介绍
Python的PIL库中的paste方法
python listdir() 中文路径 中文文件夹 乱码 解决方法
操作文件和目录:listdir--遍历所有文件
python中加入中文注释报错处理
Python 几种取整的方法
python 判断是否为一个文件或文件夹
python获取当前时间的用法

python 图片拼接相关推荐

  1. python 图片拼接成数字_用Python语言对任意图像进行m*n的均匀分块并拼接还原(思路非常清晰,步骤简单)...

    目录 1.读取原始图像 2.网格划分,将图像划分为m*n块 2.1分块后图像的存储问题 2.2图像的裁剪 2.3图像长宽的整除问题 方法一:四舍五入法 方法二:图像缩放法 方法三:非均分方法 3.显示 ...

  2. python 图片拼接_使用Python拼接多张图片

    写机器学习相关博文,经常会碰到很多公式,而Latex正式编辑公式的利器.目前国内常用的博客系统,好像只有博客园支持,所以当初选择落户博客园.我现在基本都是用Latex写博文,然后要发表到博客园上与大家 ...

  3. 【原创】Python 图片拼接

    本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! 环境 win10 Python3.9 P ...

  4. python 图片拼接成固定行列

    要求,图片大小一致.行列相乘为总数 全文来自:https://blog.csdn.net/ahaotata/article/details/84027000 import PIL.Image as I ...

  5. python图片拼接成特定图案_Python 把几张图片拼接成一张图片,并且写上文字

    # 要拼接的图片名称是1,2,3...这样有顺序的 # 把当前目录下的所有图片从上到下拼接成一张图片 # 该图片的宽度是图片中最宽图片的宽度 # 不改变原来图片的大小,所以拼接后有的地方存在未填充的地 ...

  6. 【小方法】python图片拼接(PIL模块)

    使用场景: 今天超级

  7. python+selenium实现网页全屏截图

    python+selenium实现网页全屏截图 前言 实现方法采用 Pillow+Selenium,基本原理为:截取多张不同位置的页面,拼接成一个图片 已知情报:Chrome()只能截取当前屏幕展示出 ...

  8. 【Python】 将图片绘制到Excel表格中

    首先,可以发现Excel表格可以给每一个格子分别填充颜色(RGB) 而且,通过调整格子的长宽,可以调整为方形格子(相当于像素格子) 那么便可以开始大胆的创作[疑似某国际手势] 好好填一张图看看效果: ...

  9. 字符26进制 与 10进制【可以这样来理解】

    生活,应用中,会遇到一类极有规律的字符序列,像这样: A B C D - AA -- AZ -- AAA -- ZZZ -- 一琢磨,跟数制很像,但又不全是,那么列出一部分对比看看 于是,不妨使 A- ...

最新文章

  1. 把自己编写的python模块添加到PYTHONPATH上
  2. 第一章 编程基础知识
  3. matlab读int16读文件_MATLAB——文件读写(1)
  4. 关于 TypeScript 联合类型 union type 赋值的一个错误消息
  5. cocos2d学习笔记2——学习资源
  6. 基于×××环境下的远程视频监控传输
  7. 【NOIP2005】【Luogu1051】谁拿了最多奖学金
  8. Win7 XAMPP apache无法启动的问题
  9. 舒尔补理论Schur Compliment
  10. Visual Studio 单元测试之六---UI界面测试
  11. MySQL数据库使某个不是主键的字段唯一
  12. 零基础学pythonpdf老男孩_零基础可以选择学习Python吗?老男孩Python脱产班
  13. 红外图像和热成像图像
  14. android多媒体框架学习
  15. 全能模拟器retroarch+android,全能模拟器(RetroArch Android)
  16. 一种简单的zabbix客户端 主机hostid查看方法
  17. 淘宝大数据,打假新武器
  18. JVM 运行机制及其原理
  19. 【绝对管用】彻底的卸载干净oracle 11g
  20. 短期连载 第1回 万代南梦宫工作室动画的流派 BNS动作捕捉汐留工作室的采访

热门文章

  1. 程序员都关注了这些公众号,你关注了吗?
  2. 微信支付宝二码合一开发(java)
  3. 联通推流量银行 噱头大于实用
  4. 11205 - The broken pedometer
  5. 解决魅族应用中心淘宝广告SQL
  6. 对于PHP连接数据库出现(Client does not support authentication protocol requested by server ;consider upgrad)
  7. IDEA关闭页面浏览器显示图标
  8. 微信支付 回调地址哪里设置
  9. 百度松果线上菁英班竞赛真题
  10. 《一个人的电商》思维导图读书笔记,精华提炼!