设计师阿文正在调整素材图片库,她把素材图片放在 picture文件夹中,阿文要在这些素材图片中,找出图片尺寸(长*宽)大于60*60的素材图片。
可是素材图片有几百张,想要在这么多图片中找出尺寸不符合的,那可就太费时了(⊙?⊙)
阿文灵机一动,想到了好办法,她可以通过今天学习的ezexif模块,获取图片的长度EXIF ExifImageLength和图片的宽度EXIF ExifImageWidth。
通过判断图片的长度和宽度是否小于60,如果小于60,就在一个文件夹中,例如:素材。如果大于60,就放在另一个文件夹中,例如:修改
文件夹路径:
/Users/yequ/Desktop/picture
思路:
1、 导入os、ezexif、shutil模块。
2、将照片文件夹路径
/Users/yequ/Desktop/picture 赋值给path
3、使用os.path.join()函数拼接path和文件夹名”素材”,赋值给变量resourcePath
4、使用os.path.exists()函数判断当如果目标文件夹不存在,使用os.mkdir()函数创建文件夹。使用os.path.join()函数拼接path和文件夹名”修改”,赋值给变量revisePath
5、使用os.path.exists()函数判断当如果目标文件夹不存在,使用os.mkdir()函数创建文件夹,使用os.listdir()函数获取path路径下所有的文件(夹),并赋值给变量photoList。
6、使用for循环遍历所有文件(夹),使用os.path.join()函数拼接path和文件名,赋值给变量photoPath。
7、使用函数os.path.isdir()判断当photoPath不是文件夹时,获取exif信息,赋值给变量exifInfo,获取照片长度,赋值给变量imageLeng,获取照片宽度,赋值给变量imageWidth。
8、如果整型imageLeng和整型imageWidth都比60小,转移图片到素材文件夹。否则转移图片到修改文件夹。print输出success
提示:
查找图片尺寸
使用ezexif模块,获取图片exif信息,EXIF ExifImageLength和EXIF ExifImageWidth就可以获取图片的长度和宽度
import ezexif
exifInfo = ezexif.process_file(“海贼王.JPG”)
# 获取照片长度
imageLeng = exifInfo[‘EXIF ExifImageLength’]
# 获取照片宽度
imageWidth = exifInfo[‘EXIF ExifImageWidth’]
解析:
Step.1
导入os、ezexif、shutil模块。
# TODO 导入os模块
import os
# TODO 导入ezexif模块
import ezexif
# TODO 导入shutil模块
import shutil
Step.2
将照片文件夹路径
/Users/yequ/Desktop/picture 赋值给path
# TODO 将照片文件夹路径
/Users/yequ/Desktop/picture 赋值给path
path=”/Users/yequ/Desktop/picture”
Step.3
使用os.path.join()函数拼接path和文件夹名”素材”,赋值给变量resourcePath
# TODO 使用os.path.join()函数拼接path和文件夹名”素材”,赋值给变量resourcePath
resourcePath=os.path.join(path,”素材”)
Step.4
使用os.path.exists()函数判断当如果目标文件夹不存在,使用os.mkdir()函数创建文件夹。使用os.path.join()函数拼接path和文件夹名”修改”,赋值给变量revisePath
# TODO 使用os.path.exists()函数判断当如果目标文件夹不存在
if not os.path.exists(resourcePath):
# TODO 使用os.mkdir()函数创建文件夹
os.mkdir(resourcePath)
# TODO 使用os.path.join()函数拼接path和文件夹名”修改”,赋值给变量revisePath
revisePath=os.path.join(path,”修改”)
Step.5
使用os.path.exists()函数判断当如果目标文件夹不存在,使用os.mkdir()函数创建文件夹,使用os.listdir()函数获取path路径下所有的文件(夹),并赋值给变量photoList。
# TODO 使用os.path.exists()函数判断当如果目标文件夹不存在
if not os.path.exists(revisePath):
# TODO 使用os.mkdir()函数创建文件夹
os.mkdir(revisePath)
# TODO 使用os.listdir()函数获取path路径下所有的文件(夹),并赋值给变量photoList
photoList=os.listdir(path)
Step.6
使用for循环遍历所有文件(夹),使用os.path.join()函数拼接path和文件名,赋值给变量photoPath。
# TODO 使用for循环遍历所有文件(夹)
for photo in photoList:
# TODO 使用os.path.join()函数拼接path和文件名,赋值给变量photoPath
photoPath=os.path.join(path,photo)
Step.7
使用函数os.path.isdir()判断当photoPath不是文件夹时,获取exif信息,赋值给变量exifInfo,获取照片长度,赋值给变量imageLeng,获取照片宽度,赋值给变量imageWidth。
# TODO 使用函数os.path.isdir()判断当photoPath不是文件夹时
if not os.path.isdir(photoPath):
# TODO 获取exif信息,赋值给变量exifInfo
exifInfo=ezexif.process_file(photoPath)
# TODO 获取照片长度,赋值给变量imageLeng
imageLeng=exifInfo[“EXIF ExifImageLength”]
# TODO 获取照片宽度,赋值给变量imageWidth
imageWidth=exifInfo[“EXIF ExifImageWidth”]
Step.8
如果整型imageLeng和整型imageWidth都比60小,转移图片到素材文件夹。否则转移图片到修改文件夹。print输出success
# TODO 如果整型imageLeng和整型imageWidth都比60小
if int(imageLeng)<60 and int(imageWidth)<60:
# TODO 转移图片到素材文件夹
shutil.move(photoPath,resourcePath)
# TODO 否则
else:
# TODO 转移图片到修改文件夹
shutil.move(photoPath,revisePath)
# TODO print输出success
print(“success”)
完整代码:
# TODO 导入os模块import os# TODO 导入ezexif模块import ezexif# TODO 导入shutil模块import shutil# TODO 将照片文件夹路径 /Users/yequ/Desktop/picture 赋值给pathpath="/Users/yequ/Desktop/picture"# TODO 使用os.path.join()函数拼接path和文件夹名"素材",赋值给变量resourcePathresourcePath=os.path.join(path,"素材")# TODO 使用os.path.exists()函数判断当如果目标文件夹不存在if not os.path.exists(resourcePath): # TODO 使用os.mkdir()函数创建文件夹 os.mkdir(resourcePath)# TODO 使用os.path.join()函数拼接path和文件夹名"修改",赋值给变量revisePathrevisePath=os.path.join(path,"修改")# TODO 使用os.path.exists()函数判断当如果目标文件夹不存在if not os.path.exists(revisePath): # TODO 使用os.mkdir()函数创建文件夹 os.mkdir(revisePath)# TODO 使用os.listdir()函数获取path路径下所有的文件(夹),并赋值给变量photoListphotoList=os.listdir(path)# TODO 使用for循环遍历所有文件(夹)for photo in photoList: # TODO 使用os.path.join()函数拼接path和文件名,赋值给变量photoPath photoPath=os.path.join(path,photo) # TODO 使用函数os.path.isdir()判断当photoPath不是文件夹时 if not os.path.isdir(photoPath): # TODO 获取exif信息,赋值给变量exifInfo exifInfo=ezexif.process_file(photoPath) # TODO 获取照片长度,赋值给变量imageLeng imageLeng=exifInfo["EXIF ExifImageLength"] # TODO 获取照片宽度,赋值给变量imageWidth imageWidth=exifInfo["EXIF ExifImageWidth"] # TODO 如果整型imageLeng和整型imageWidth都比60小 if int(imageLeng)<60 and int(imageWidth)<60: # TODO 转移图片到素材文件夹 shutil.move(photoPath,resourcePath) # TODO 否则 else: # TODO 转移图片到修改文件夹 shutil.move(photoPath,revisePath) # TODO print输出successprint("success")
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!