zoukankan      html  css  js  c++  java
  • python 工具 图片批量合并

    注:代码两处设置 region = (4,3,x-3,y-5) 目的是crop剪去图片的白边,这个可以视情况改变

    图片需要命名为   x_1.png   .....这样的格式

    #encoding=utf-8
     
    import numpy as np
    from PIL import Image
    import glob
     
    if __name__=='__main__':
        prefix="x"
        files=glob.glob(prefix+'_*')
        num=len(files)
     
        filename_lens=[len(x) for x in files] #length of the files
        min_len=min(filename_lens) #minimal length of filenames
        max_len=max(filename_lens) #maximal length of filenames
        if min_len==max_len:#the last number of each filename has the same length
            files=sorted(files) #sort the files in ascending order
        else:#maybe the filenames are:x_0.png ... x_10.png ... x_100.png
            index=[0 for x in range(num)]
            for i in range(num):
                filename=files[i]
                start=filename.rfind('_')+1
                end=filename.rfind('.')
                file_no=int(filename[start:end])
                index[i]=file_no
            index=sorted(index)
            files=[prefix+'_'+str(x)+'.png' for x in index]
     
        print(files[0])
        baseimg=Image.open(files[0])
        x, y=baseimg.size
        region = (4,3,x-3,y-5)
        baseimg= baseimg.crop(region)
        sz=baseimg.size
        basemat=np.atleast_2d(baseimg)
        for i in range(1,num):
            file=files[i]
            im=Image.open(file)
            x, y=baseimg.size
            region = (4,3,x-3,y-5)
            im= im.crop(region)
            im=im.resize(sz,Image.ANTIALIAS)
            mat=np.atleast_2d(im)
            print(file)
            basemat=np.append(basemat,mat,axis=1)
        final_img=Image.fromarray(basemat)
        final_img.save('merged.bmp')
  • 相关阅读:
    寿司点餐系统Sprint1总结
    寿司点餐系统一周总结
    对点餐APP现阶段开发的问题
    寿司点餐系统11.16
    Sprint
    R扩展包
    实验8 SQLite数据库操作
    实验7 BindService模拟通信
    实验6 在应用程序中播放音频和视频
    实验5 数独游戏界面设计
  • 原文地址:https://www.cnblogs.com/dzzy/p/9290395.html
Copyright © 2011-2022 走看看