因项目需求需要将图片合并故写了一个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. 【bzoj2759】一个动态树好题

    Portal -->bzoj2759 Solution 哇我感觉这题真的qwq是很好的一题呀qwq 很神qwq反正我真的是自己想怎么想都想不到就是了qwq 首先先考虑一下简化版的问题应该怎么解决 ...

  2. 三年java面试题

    前言: 楼主毕业三年,从大学时期就开始一直从事java web方面的开发.我在去年的今天有一篇帖子:两年java面试经验.经历了一年的上班,成长了很多.今年因为某些原因辞职了.从2月底辞职,到3月初, ...

  3. C++之正则表达式20171121

    准确来说,不论在C++或C中,只要在Linux系统中都可以使用本文讲诉的正则表达式使用方式. 一.Linux中正则表达式的使用步骤: 编译正则表达式 regcomp() 匹配正则表达式 regexec ...

  4. nodejs express框架一个工程中同时使用ejs模版和jade模版

    在某些项目中,比如你接手了一个别人的项目然后你不想用蛋疼的ejs,或者你不想用蛋疼的jade.你有不想重写之前的页面,那么你现在可能需要新引入ejs或者jade模块,你仅仅需要做下面两步也许就能完成使 ...

  5. count distinct

    SELECT COUNT(DISTINCT Customer) AS NumberOfCustomers FROM Orders

  6. Java的三大特性之封装

    java提高篇(一)-----理解java的三大特性之封装 三大特性之---封装 封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一 ...

  7. Hbuider制作app升级包的简单办法 (升级官方提供的案例)

    源文档:http://ask.dcloud.net.cn/question/11795 http://ask.dcloud.net.cn/article/199 一.生成移动App资源升级包 5+应用 ...

  8. [吴恩达机器学习笔记]12支持向量机5SVM参数细节

    12.支持向量机 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考资料 斯坦福大学 2014 机器学习教程中文笔记 by 黄海广 12.5 SVM参数细节 标记点选取 标记点(landma ...

  9. ACM-ICPC2018 沈阳赛区网络预赛-E-The cake is a lie

    You promised your girlfriend a rounded cake with at least SS strawberries. But something goes wrong, ...

  10. 在GitHub搭建个人博客 地址: https://douzujun.github.io/

    搭建博客地址:https://douzujun.github.io/ 博客模板:https://github.com/douzujun/douzujun.github.io 显示效果: