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">& ...
随机推荐
- DES算法和MAC算法总结
需要用到的工具类,代码如下: import java.io.UnsupportedEncodingException; import java.nio.ByteBuffer; import java. ...
- 洛谷P1230 智力大冲浪
题目描述 小伟报名参加中央电视台的智力大冲浪节目.本次挑战赛吸引了众多参赛者,主持人为了表彰大家的勇气,先奖励每个参赛者m元.先不要太高兴!因为这些钱还不一定都是你的?!接下来主持人宣布了比赛规则: ...
- 树莓派apt-get下载网速太慢
因为学校有ipv6的原因,当我想用ipv4的时候用apt-get发现特别慢.找了很久终于找到了解决方案: Add -o Acquire::ForceIPv4=true when running apt ...
- google protobuf service使用
http://note.youdao.com/noteshare?id=c59aaf827878e7a3611588f3abcd3bee
- 手脱nSPack 1.3
1.PEID查壳 nSPack 1.3 -> North Star/Liu Xing Ping 2.载入OD,pushad下面的call哪里使用ESP定律,下硬件访问断点,然后shift+F9运 ...
- rar 解压
三.rar命令语法 将/etc 目录压缩为etc.rar 命令为: rar a etc.rar /etc 1 将etc.rar 解压 命令为: rar x etc.rar unrar -e etc.t ...
- windows如何要查看IIS连接数
1.运行,输入,perfmon.msc 2.在系统监视器,区域点击,添加计数器. 3.在“添加计数器”窗口,“性能对象”选择Web Service,“从列表选择计数器”选中Current Connec ...
- Mac环境下SVN的配置和使用
简单记录一下在Mac环境下,SVN的配置步骤和使用相关.(Mac自带了svn的服务器和客户端功能,简单配置一下即可使用) 一.SVN的配置方法 1. 创建一个仓库目录,比如在/Users/你的用户名 ...
- 改变你一生的编辑器:VSCode使用总结
开发十年,只剩下这套Java开发体系了 >>> 前言:vscode是微软出品的,基于Electron和TypeScript的,现在已经是最火的一款文本编辑器.我认为vscode是 ...
- UVA 12520 Square Garden
https://vjudge.net/problem/UVA-12520 题意:n*n网格中染色m个格子,染色格子的最长轮廓线 贪心 将格子分为4类 1.隔一个选一个,互不相邻的格子 2.4个角上的格 ...