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

#!/usr/bin/env python
#coding=utf-8 import Image
import os
import sys
import glob
import time
import shutil def merge_thumb(files, output_file):
imgs = []
width = 0
height = 0 index = 0 # 计算总宽度和长度
for file in files:
print ("file name : %s" % (str(file)))
img = Image.open(file)
imgs.append(img)
if img.size[0] > width:
width = img.size[0]
height = img.size[1] # 新建一个白色底的图片
merge_img = Image.new('RGB', (width, height), 0xffffff)
for img in imgs:
# 把图片粘贴上去
merge_img.paste(img, (0, 0), img) merge_img.save(output_file, quality=70) def getPngName(filename):
begin = filename.index('thumbs/') + 7
end = len(filename)- 4
result = filename[begin:end]
return int(result) def coverFiles(sourceFile, targetDir):
filename = os.path.split(sourceFile)[-1]
targetFile = os.path.join(targetDir,filename)
if os.path.isfile(sourceFile):
open(targetFile, "wb").write(open(sourceFile, "rb").read()) if __name__ == '__main__':
ROOT_PATH = os.path.abspath(os.path.dirname(__file__))
#IMG_PATH = os.path.join(ROOT_PATH, 'img')
THUMB_PATH = os.path.join(ROOT_PATH, 'thumbs') print ("thumb_path:%s" % str(THUMB_PATH))
if not os.path.exists(THUMB_PATH):
os.makedirs(THUMB_PATH) files = glob.glob(os.path.join(ROOT_PATH,'*.png'))
for srcFile in files:
targetFile = "thumbs/"+os.path.split(srcFile)[-1]
shutil.copy(srcFile,targetFile)
RESULT_PATH = os.path.join(THUMB_PATH, 'result')
if not os.path.exists(RESULT_PATH):
os.makedirs(RESULT_PATH) files = glob.glob(os.path.join(THUMB_PATH, '*.png'))
files_len = len(files) for i in range(0,files_len):
# 合并图片
files = glob.glob(os.path.join(THUMB_PATH, '*.png')) files_new = []
index = 0 #print(files)
for file in files:
files_new_len = len(files_new)
insert_index = 0
for j in range(0,files_new_len):
if (getPngName(files_new[j])>getPngName(files[index])):
insert_index = j+1;
files_new.insert(insert_index,file)
index += 1 #get put out file name
index = len(files) - len(files_new)
index = len(files_new) - index - 1 begin = files_new[index].index('thumbs/') + 7
end = len(files_new[index])
output = 'result/'+files_new[index][begin:end]
print ('output=%s index = %s' % (output,index)) merge_output = os.path.join(THUMB_PATH, output)
begin_time = time.clock()
merge_thumb(files_new, merge_output)
end_time = time.clock()
print ('merge_thumb time:%s**********output:%s*******remove:%s' % (str(end_time - begin_time),output,files_new[index])) 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. 9.Android UiAutomator正则表达式的使用

    一.正则表达式元字符: 1.一些常用元字符: 元字符 描述 . 表示任意一个字符 \s 空格字符(空格键.tab.换行.换页.回车) \S 非空字符串([^\s]) \d 一个数字(相当于[0-9]中 ...

  2. 正则(?is)

    Q:经常看见的正则前面的 (?i) (?s) (?m) (?is) (?im) 是什么意思?A: 称为内联匹配模式,通常用内联匹配模式代替使用枚举值RegexOptions指定的全局匹配模式,写起来更 ...

  3. centos7-java模拟cpu占用高及排查

    环境 centos7 1核2GB Java8 模拟cpu占用高 新建一个名为jvm-learn的springboot项目 模拟代码如下 import org.springframework.boot. ...

  4. jdbc:oracle:thin:@localhost:1521:orcl和jdbc:oracle:thin:@localhost:1521/orcl的区别

      Oracle Thin JDBC Driver 驱动程序包名:ojdbc14.jar.ojdbc6.jar 驱动程序类名: oracle.jdbc.driver.OracleDriver JDBC ...

  5. hbase性能调优案例

    hbase性能调优案例 1.人员-角色   人员有多个角色  角色优先级   角色有多个人员   人员 删除添加角色   角色 可以添加删除人员   人员 角色 删除添加   设计思路 person表 ...

  6. GridControl详解(二)表格的列名配置

    点击Run Designer控件上的按钮,弹出视图设计窗口: 列配置: 我们配置完列名后,会发现设计视图发生了变化:

  7. 【BZOJ】1066: [SCOI2007]蜥蜴

    [算法]网络流-最大流(dinic) [题解] 构图思路: 因为石柱高度是可以被消耗的,即一根石柱可通过的蜥蜴数量有限,取舍问题中这样表示容量的属性显然可以作为网络流中的边. 于是将一根石柱拆成顶部和 ...

  8. 【CodeForces】585 E. Present for Vitalik the Philatelist

    [题目]E. Present for Vitalik the Philatelist [题意]给定n个数字,定义一种合法方案为选择一个数字Aa,选择另外一些数字Abi,令g=gcd(Ab1...Abx ...

  9. arguments.length

    本文地址:http://www.cnblogs.com/veinyin/p/7607083.html  arguments.length是实参的个数,与形参个数无关.

  10. java规范之checkstyle

    1. 概述 随着中心的代码规范的建立和实施,项目组对代码规范要求,以及软件工程师们对自身代码的编写规范重要性的认知,“代码规范”已经成为了中心的一个“热词”.然后怎么才能写出有规范的代码,怎么才能养成 ...