遍历文件夹下的图片(包括子文件夹),按照每100个单位尺寸切割为N份,将N份放入N个文件夹下面

在使用save函数时,单独的PIL.image.save没有找到直接存到相应地址。因此加了os.path.join函数,把其结果当作filename参数传到save中。
import os
from PIL import Image
image_path = 'F:/AI平台/测试资源/风机叶片/原图/'


# 遍历文件夹及其子文件夹中的文件,并存储在一个列表中

# 输入文件夹路径、空文件列表[]

# 返回 文件列表Filelist,包含文件名(完整路径)

def get_filelist(dir, Filelist):
    newDir = dir
    if os.path.isfile(dir):
        """如果path是文件而非文件夹,将文件路径加入Filelist"""
        # print(os.path(dir))
        Filelist.append(dir)
        # # 若只是要返回文件文,使用这个
        # Filelist.append(os.path.basename(dir))
    elif os.path.isdir(dir):
        """如果path是文件夹,"""
        for s in os.listdir(dir):
            # 如果需要忽略某些文件夹,使用以下代码
            # if s == "xxx":
            # continue
            newDir = os.path.join(dir, s)   #join函数,将dir和s拼接为dir\s
            get_filelist(newDir, Filelist) #调用本函数
    return Filelist

def transtpicsize(Start_path,i,sizelist):
    # print list
    im = Image.open(Start_path)
    w, h = im.size
    print('宽w,高h:', w, h)
    # print w,h
    # iphone 5的分辨率为1136*640,如果图片分辨率超过这个值,进行图片的等比例压缩
    k=0
    for j in sizelist:

        w2=int(j['w1'])
        h2=int(j['h1'])
        print('宽,高:',w2,h2)

        if (w >w2-100 and w<w2+100 and h>h2-100 and h<h2+100):
            h_new = h2
            w_new = w2
            out = im.resize((w_new, h_new), Image.ANTIALIAS)
            new_pic = str(i)+Start_path[-4:]
            print('k',k)
            l=os.path.join('F:/test-process/picstranst/'+str(k),new_pic)
            out.save(l)
        k = k + 1

        # else:
        #     out = im.resize((w2, h2), Image.ANTIALIAS)
        #     new_pic = str(i)+Start_path[-4:]
        #     l=os.path.join('F:/test-process/picstranst/othersize/',new_pic)
        #     out.save(l)
        #     k = k + 1
if __name__ == '__main__':
    sizelist=[]
    max_w=6720.0
    min_w=500.0
    while min_w<max_w:
        min_w=min_w+100
        min_h=min_w*1080/720
        size1={'w1':min_w,'h1':min_h}
        sizelist.append(size1)
    max_w = 6720.0
    min_w = 500.0
    while min_w<max_w:
        min_w=min_w+100
        min_h=min_w*308/400
        size1={'w1':min_w,'h1':min_h}
        sizelist.append(size1)
    list = get_filelist('F:\AI平台\测试资源\安全帽\VOC2028\JPEGImages/', [])
    # print(len(list))
    j=0
    i = 0

'''建len(sizelist)个文件夹,所有图片按照长款,每100个单位尺寸切割为一种尺寸,并存储到对应的文件夹下面'''
    while j<len(sizelist):
        if os.path.exists(str(j)):
            j = j + 1
            pass
        else:
            os.mkdir(str(j))
            j=j+1
    for e in list:
        print('e',e)
        if 'jpg' in e or 'png' in e or 'JPG' in e or 'PNG' in e:
            print(i)
            transtpicsize(Start_path=e,i=i,sizelist=sizelist)
            i=i+1
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值