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 以此类推

 

posted @ 2013-09-13 16:39  华仔崽  阅读(5647)  评论(1编辑  收藏  举报
友情链接 JeffreyZhao  zhangziqiu 短信猫 MVC学习 .net面试问答(大汇总) python