python3批量筛选图片,根据 size,使用 pillow
2019-04-25 本文已影响0人
lightandall
少废话直接看code
#!/usr/bin/env python3
#-*- coding:utf-8 -*-
from PIL import Image
import os
# 需要处理的文件夹,改你的文件夹的路径
folder = '/Users/sea/Desktop/0/'
# 处理图片后输出的文件夹,
outPath = '/Users/sea/Desktop/excellent/'
if not os.path.exists(outPath): #如果不存在则创建一个
os.makedirs(outPath)
# 处理后需要在次筛选的文件,
outPath2 = '/Users/sea/Desktop/medium/'
if not os.path.exists(outPath2): #如果不存在则创建一个
os.makedirs(outPath2)
# 处理图片的主程序
def picProcess(imagePath):
# 获取单张图片的宽和高
img = Image.open(imagePath)
width,height = img.size
# print('Width = %s , Height = %s' % (width,height))
# 输出的路径和名称
path = outPath + imagePath
path2 = outPath2 + imagePath
# 按照比例缩放的计算
newheight = int((1125 * height) / width)
newwidth = int((2436 * width) / height)
#设置一些规则过滤筛选图片,输出到不同的文件夹。
if width >= 1125 and height >= 2436 and width < height:
img = img.resize((1125,newheight),Image.LANCZOS)
print(imagePath, img.size[1] , '以宽1125进行缩小',height/width)
img.save(path,quality=85) #图片非常优秀,进入excellent文件夹
elif width >= 1125 and height >= 2436 and width > height:
img = img.resize((newwidth,2436),Image.LANCZOS)
print(imagePath, img.size[0] , '以高为2436进行缩小',height/width)
img.save(path,quality=85) #图片非常优秀,进入excellent文件夹
elif 1000 < width < 1125 or 1900 < height < 2436 :
print(imagePath , '保存到2号文件夹,待操作')
img.save(path2,quality=80) #图片中等,进入人工筛选状态
elif width <= 1000 or height <= 1900:
print(imagePath , "不操作,等于删除")
pass #图片质量低,直接删除
# print( imagePath + ' save is done')
# 遍历文件夹里的图片然后循环
def runScript():
#改变当前工作目录到指定的路径:图片的列表文件夹
os.chdir(folder)
#for in遍历文件夹,os.listdir()方法用于返回指定的文件夹包含的文件或文件夹的名字的列表
for image in os.listdir(os.getcwd()): #os.getcwd()方法用于返回当前工作目录
# print(image)
#只识别图片格式,忽略其它文件
imageType = os.path.splitext(image)[1]
# print(imageType,image)
if imageType == '.jpg' or imageType == '.JPG' or imageType == '.jpeg' or imageType == '.PNG':
# print(image)
picProcess(image) #执行封装好的压缩程序
if __name__ == '__main__':
runScript()
#-*- MAX Young 2019-4-17 -*-