python合并图片
因项目需求需要将图片合并故写了一个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合并图片的更多相关文章
- python接收图片变成缩略图
python图像处理库:Pillow初级教程 Image类 Pillow中最重要的类就是Image,该类存在于同名的模块中.可以通过以下几种方式实例化:从文件中读取图片,处理其他图片得到,或者直接创建 ...
- 用DIV+CSS切割多背景合并图片 CSS Sprites 技术
很久之前就在互联网网站和一些js插件中见过这种技术的应用,当时觉得很麻烦,就没有用,也没有去深究. 近段时间一直在做前台的一些东西,涉及到很多div+css的问题.这个东东我又碰到了,所以我花了点时间 ...
- c# 根据窗口截图,合并图片
c# 根据窗口截图,合并图片 public class CaptureWindows { #region 类 /// <summary> /// Helper class containi ...
- Python提取图片的ROI
图像处理经常需要提取图片的ROI,本文使用Python提取图片的ROI. 使用的Module是PIL (Pillow),一个图像处理库,用到的函数为类 Image 中的 crop 方法. 函数原型为: ...
- python 读取图片的尺寸、分辨率
#需要安装PIL模块 #encoding=gbk#--------------------------------------------------------------------------- ...
- 减少HTTP请求之合并图片详解(大型网站优化技术)
原文:减少HTTP请求之合并图片详解(大型网站优化技术) 一.相关知识讲解 看过雅虎的前端优化35条建议,都知道优化前端是有多么重要.页面的加载速度直接影响到用户的体验.80%的终端用户响应时间都花在 ...
- C#放缩、截取、合并图片并生成高质量新图的类
原文:C#放缩.截取.合并图片并生成高质量新图的类 using System;using System.Drawing;using System.Drawing.Imaging;using Syste ...
- python 对比图片相似度
最近appium的使用越来越广泛了,对于测试本身而言,断言同样是很重要的,没有准确的断言那么就根本就不能称之为完整的测试了.那么目前先从最简单的截图对比来看.我这里分享下python的图片相似度的代码 ...
- C#一些常用的图片操作方法:生成文字图片 合并图片等
生成文字图片: /// <summary> /// 生成文字图片 /// </summary> /// <param name="text">& ...
随机推荐
- 用dtree实现树形菜单 dtree使用说明
http://www.jb51.net/article/28566.htm 准备工作: 请从脚本之家http://www.jb51.net/jiaoben/31974.html下载dtree.zip文 ...
- flask学习之解决Internal Server Error问题的方式之一
最近在学习flask web development的时候,遇到了这么一个问题,就是照着书上敲的代码,跑起来是Internal server error,由于中途学的时候为了方便,改用pycharm来 ...
- Android Monkey 脚本编写与检查内存泄露
一.Monkey脚本编写 1.Monkey脚本格式 脚本优势: 简单快捷,不需要接触任何工具,只需要一个记事本文件 脚本缺点: 实现坐标.按键等基本操作的相应步骤,顺序脚本无逻辑性 脚本源码: \de ...
- 手脱PEtite v2.1
1.载入PEID PEtite v2.1 2.载入OD,先F8跟一下 0042C10F > B8 00C04200 mov eax,跑跑排行.0042C000 ; //程序入口点 0042C11 ...
- Linux常用网络工具:路由扫描之traceroute
之前两篇<Linux常用网络工具:fping主机扫描>和<Linux常用网络工具:hping高级主机扫描>都是关于主机扫描的,本篇介绍Linux下常用的路由扫描工具tracer ...
- 第2章-Vue.js指令
一.学习目标 了解 什么 是 Vue.js 指令 理解 Vue.js 指令的 用途 掌握 Vue.js 指令的书写规范 能够 使用 Vue.js 指令完成部门页面交互效果(难点和重点) 二.指令的基本 ...
- vue 一开始
项目安装 vue init webpack bibivue-router Y npm run dev
- 《Apache HttpClient 4.3开发指南》
转载自:http://blog.csdn.net/chszs/article/details/16854747 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chs ...
- Python学习笔记(四十三)virtualenv (创建一套“隔离”的Python运行环境)
摘抄自:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001432712108 ...
- 【LIbreOJ】#6256. 「CodePlus 2017 12 月赛」可做题1
[题意]定义一个n阶正方形矩阵为“巧妙的”当且仅当:任意选择其中n个不同行列的数字之和相同. 给定n*m的矩阵,T次询问以(x,y)为左上角的k阶矩阵是否巧妙.n,m<=500,T<=10 ...