Python合并图片简单代码

发布时间:2020-06-05编辑:脚本学堂
有关python合并图片的方法,一段python进行图片合并的代码,合并多张图片,把图片依次串起来做成一个长条,以最宽的图片为最终图片的宽度,需要的朋友参考下。

python合并多张图片的代码

只是把图片依次串起来做成一个长条,以最宽的图片为最终图片的宽度。
将脚本拖到Total Commander的工具栏上,然后点右键->改变,将参数设为%S,将开始路径留空,这样在Total Commander中将要合并的图片全部选中后,直接点脚本,就会把选中的所有图片合并成一张。

注意较低版本的Total Commander不支持%S参数,为了能用上这个参数我换掉了自从知道Total Commander后就一直在用的6.53版,用上了最新的7.50a,本来以为会有什么麻烦,结果将配置文件直接拷到新版本的目录一切照旧。
果然是Total Commander,非常强大的软件。

完整代码:
 

复制代码 代码示例:

#!/usr/bin/env python
#
# -*- coding:utf-8 -*-
# file: MergeImg.py
# note:
import os
import sys
import Image
import time
class MergeImg:
   # 预留边框
   BORDER_SIZE = 20
  def __init__(self, imageFiles):
      self.images = []
      self.num = len(imageFiles)
      self.width = 0
      self.height = 0
      for image in imageFiles:
          im = Image.open(image)
          if im.size[0] > self.width:
              self.width = im.size[0]
          self.height = self.height + im.size[1]
         self.images.append(im)
       self.width = self.width + 2 * self.BORDER_SIZE
       self.height = self.height + (self.num + 1) * self.BORDER_SIZE
    
    def save(self, fileName):
       self.outImg = Image.new('RGB', (self.width, self.height))
       self.outImg.paste(0xFFFFFF, (0, 0, self.width, self.height))
       curHeight = self.BORDER_SIZE
         offset = 0
         for image in self.images:
          tmp = image.copy()
            offset = (self.width - 2 * self.BORDER_SIZE - image.size[0]) / 2
            self.outImg.paste(tmp, (self.BORDER_SIZE + offset, curHeight))
             curHeight = curHeight + tmp.size[1] + self.BORDER_SIZE
         self.outImg.save(fileName)
 
def main():
   TIMEFORMAT = '%Y%m%d%H%M%S'
   outFile = 'Py' + time.strftime(TIMEFORMAT, time.localtime()) + '.jpg'
   imageFiles = sys.argv[1:]
   mergeImg = MergeImg(imageFiles)
   mergeImg.save(outFile)
   os.system(outFile)

if __name__ == '__main__':
   main()