因项目需求需要将图片合并故写了一个python脚本,在这里放个笔记

  1. #!/usr/bin/env python
  2. #coding=utf-8
  3.  
  4. import Image
  5. import os
  6. import sys
  7. import glob
  8. import time
  9. import shutil
  10.  
  11. def merge_thumb(files, output_file):
  12. imgs = []
  13. width = 0
  14. height = 0
  15.  
  16. index = 0
  17.  
  18. # 计算总宽度和长度
  19. for file in files:
  20. print ("file name : %s" % (str(file)))
  21. img = Image.open(file)
  22. imgs.append(img)
  23. if img.size[0] > width:
  24. width = img.size[0]
  25. height = img.size[1]
  26.  
  27. # 新建一个白色底的图片
  28. merge_img = Image.new('RGB', (width, height), 0xffffff)
  29. for img in imgs:
  30. # 把图片粘贴上去
  31. merge_img.paste(img, (0, 0), img)
  32.  
  33. merge_img.save(output_file, quality=70)
  34.  
  35. def getPngName(filename):
  36. begin = filename.index('thumbs/') + 7
  37. end = len(filename)- 4
  38. result = filename[begin:end]
  39. return int(result)
  40.  
  41. def coverFiles(sourceFile, targetDir):
  42. filename = os.path.split(sourceFile)[-1]
  43. targetFile = os.path.join(targetDir,filename)
  44. if os.path.isfile(sourceFile):
  45. open(targetFile, "wb").write(open(sourceFile, "rb").read())
  46.  
  47. if __name__ == '__main__':
  48. ROOT_PATH = os.path.abspath(os.path.dirname(__file__))
  49. #IMG_PATH = os.path.join(ROOT_PATH, 'img')
  50. THUMB_PATH = os.path.join(ROOT_PATH, 'thumbs')
  51.  
  52. print ("thumb_path:%s" % str(THUMB_PATH))
  53. if not os.path.exists(THUMB_PATH):
  54. os.makedirs(THUMB_PATH)
  55.  
  56. files = glob.glob(os.path.join(ROOT_PATH,'*.png'))
  57. for srcFile in files:
  58. targetFile = "thumbs/"+os.path.split(srcFile)[-1]
  59. shutil.copy(srcFile,targetFile)
  60. RESULT_PATH = os.path.join(THUMB_PATH, 'result')
  61. if not os.path.exists(RESULT_PATH):
  62. os.makedirs(RESULT_PATH)
  63.  
  64. files = glob.glob(os.path.join(THUMB_PATH, '*.png'))
  65. files_len = len(files)
  66.  
  67. for i in range(0,files_len):
  68. # 合并图片
  69. files = glob.glob(os.path.join(THUMB_PATH, '*.png'))
  70.  
  71. files_new = []
  72. index = 0
  73.  
  74. #print(files)
  75. for file in files:
  76. files_new_len = len(files_new)
  77. insert_index = 0
  78. for j in range(0,files_new_len):
  79. if (getPngName(files_new[j])>getPngName(files[index])):
  80. insert_index = j+1;
  81. files_new.insert(insert_index,file)
  82. index += 1
  83.  
  84. #get put out file name
  85. index = len(files) - len(files_new)
  86. index = len(files_new) - index - 1
  87.  
  88. begin = files_new[index].index('thumbs/') + 7
  89. end = len(files_new[index])
  90. output = 'result/'+files_new[index][begin:end]
  91. print ('output=%s index = %s' % (output,index))
  92.  
  93. merge_output = os.path.join(THUMB_PATH, output)
  94. begin_time = time.clock()
  95. merge_thumb(files_new, merge_output)
  96. end_time = time.clock()
  97. print ('merge_thumb time:%s**********output:%s*******remove:%s' % (str(end_time - begin_time),output,files_new[index]))
  98.  
  99. os.remove(files_new[index])

我所做的事情是讲一个文件夹下面的所有图片如(1.png 2.png ... 10.png)按照一定规律合并

合并规律为1-10合并为1.png 2-10合并为2.png 以此类推

python合并图片的更多相关文章

  1. python接收图片变成缩略图

    python图像处理库:Pillow初级教程 Image类 Pillow中最重要的类就是Image,该类存在于同名的模块中.可以通过以下几种方式实例化:从文件中读取图片,处理其他图片得到,或者直接创建 ...

  2. 用DIV+CSS切割多背景合并图片 CSS Sprites 技术

    很久之前就在互联网网站和一些js插件中见过这种技术的应用,当时觉得很麻烦,就没有用,也没有去深究. 近段时间一直在做前台的一些东西,涉及到很多div+css的问题.这个东东我又碰到了,所以我花了点时间 ...

  3. c# 根据窗口截图,合并图片

    c# 根据窗口截图,合并图片 public class CaptureWindows { #region 类 /// <summary> /// Helper class containi ...

  4. Python提取图片的ROI

    图像处理经常需要提取图片的ROI,本文使用Python提取图片的ROI. 使用的Module是PIL (Pillow),一个图像处理库,用到的函数为类 Image 中的 crop 方法. 函数原型为: ...

  5. python 读取图片的尺寸、分辨率

    #需要安装PIL模块 #encoding=gbk#--------------------------------------------------------------------------- ...

  6. 减少HTTP请求之合并图片详解(大型网站优化技术)

    原文:减少HTTP请求之合并图片详解(大型网站优化技术) 一.相关知识讲解 看过雅虎的前端优化35条建议,都知道优化前端是有多么重要.页面的加载速度直接影响到用户的体验.80%的终端用户响应时间都花在 ...

  7. C#放缩、截取、合并图片并生成高质量新图的类

    原文:C#放缩.截取.合并图片并生成高质量新图的类 using System;using System.Drawing;using System.Drawing.Imaging;using Syste ...

  8. python 对比图片相似度

    最近appium的使用越来越广泛了,对于测试本身而言,断言同样是很重要的,没有准确的断言那么就根本就不能称之为完整的测试了.那么目前先从最简单的截图对比来看.我这里分享下python的图片相似度的代码 ...

  9. C#一些常用的图片操作方法:生成文字图片 合并图片等

    生成文字图片: /// <summary> /// 生成文字图片 /// </summary> /// <param name="text">& ...

随机推荐

  1. 用dtree实现树形菜单 dtree使用说明

    http://www.jb51.net/article/28566.htm 准备工作: 请从脚本之家http://www.jb51.net/jiaoben/31974.html下载dtree.zip文 ...

  2. flask学习之解决Internal Server Error问题的方式之一

    最近在学习flask web development的时候,遇到了这么一个问题,就是照着书上敲的代码,跑起来是Internal server error,由于中途学的时候为了方便,改用pycharm来 ...

  3. Android Monkey 脚本编写与检查内存泄露

    一.Monkey脚本编写 1.Monkey脚本格式 脚本优势: 简单快捷,不需要接触任何工具,只需要一个记事本文件 脚本缺点: 实现坐标.按键等基本操作的相应步骤,顺序脚本无逻辑性 脚本源码: \de ...

  4. 手脱PEtite v2.1

    1.载入PEID PEtite v2.1 2.载入OD,先F8跟一下 0042C10F > B8 00C04200 mov eax,跑跑排行.0042C000 ; //程序入口点 0042C11 ...

  5. Linux常用网络工具:路由扫描之traceroute

    之前两篇<Linux常用网络工具:fping主机扫描>和<Linux常用网络工具:hping高级主机扫描>都是关于主机扫描的,本篇介绍Linux下常用的路由扫描工具tracer ...

  6. 第2章-Vue.js指令

    一.学习目标 了解 什么 是 Vue.js 指令 理解 Vue.js 指令的 用途 掌握 Vue.js 指令的书写规范 能够 使用 Vue.js 指令完成部门页面交互效果(难点和重点) 二.指令的基本 ...

  7. vue 一开始

    项目安装 vue init webpack bibivue-router Y npm run dev

  8. 《Apache HttpClient 4.3开发指南》

    转载自:http://blog.csdn.net/chszs/article/details/16854747 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chs ...

  9. Python学习笔记(四十三)virtualenv (创建一套“隔离”的Python运行环境)

    摘抄自:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001432712108 ...

  10. 【LIbreOJ】#6256. 「CodePlus 2017 12 月赛」可做题1

    [题意]定义一个n阶正方形矩阵为“巧妙的”当且仅当:任意选择其中n个不同行列的数字之和相同. 给定n*m的矩阵,T次询问以(x,y)为左上角的k阶矩阵是否巧妙.n,m<=500,T<=10 ...