目录
- 准备工作
- 代码实现
- 代码解析
- 激动人心的测试
- 结语
各位小伙伴们,别看这些张张图片,它们也是有生日的哦!而今天,我们就要教你一招,让python帮助图片自动按照日期分类,让这些镜头下的瞬间肆意自由,分门别类、慢慢成长!
准备工作
首先,需要携带一颗善良而充满创意的心,以及一颗热爱技术的脑袋。另外,Python的os模块、PIL库(Python Imaging Library)、以及exifread库也会是我们这次冒险的得力工具!
没有安装PIL和exifread库的,记得先安装一下哦:
pip install exifread pip install Pillow
代码实现
from PIL import Image import os import exifread from datetime import datetime def get_image_date_taken(image_path): with open(image_path, 'rb') as image_file: tags = exifread.process_file(image_file) date_taken = tags.get('EXIF DateTimeOriginal') if date_taken: return datetime.strptime(str(date_taken), '%Y:%m:%d %H:%M:%S') else: return None def classify_images_by_date(input_folder, output_folder): os.makedirs(output_folder, exist_ok=True) for filename in os.listdir(input_folder): input_path = os.path.join(input_folder, filename) if os.path.isfile(input_path): date_taken = get_image_date_taken(input_path) if date_taken: date_folder = date_taken.strftime('%Y-%m-%d') date_folder_path = os.path.编程join(output_folder, date_folder) os.makedirs(date_folder_path, exist_ok=True) output_path = os.path.join(date_folder_path, filename) os.replace(input_path, output_path) # 测试 classify_images_by_date( 'C:/Users/olive/Desktop/待分类的图片', 'C:/Users/olive/Desktop/分类后的图片')
代码解析
这段代码不仅涉及到PIL库的应用、文件处理,更使用了exifread库来获取图片的拍摄日期信息。Python就好像是一位时间旅行者,为图片镌刻上属于它们自己的生日!
现在让我来详细解析一下:
1.首先,定义了一个名为get_image_date_taken
的函数,用于获取图片的拍摄日期。它通过读取图片的exif信息(EXIF是存储在数码照片文件中的附加信息,包括拍摄日期等),获取图片的拍摄日期,并返回一个datetime
对象。
2.然后,定义了一个名为classify_images_by_date
的函数,用于分类图片并保存到对应日期的文件夹中。该函数接收两个参数:input_folder
表示输入图片存放的文件夹路径,output_folder
表示分类后图片保存的文件夹路径。
3.在classify_images_by_date
函数中,首先使用os.makedirs(output_folder,exist_ok=True)
创建输出文件夹python,如果文件夹已存在则不会报错。
4.然后,遍历输入文件夹中的每张图片。对于每张RNAfovHif图片,获取图片的完整路径input_path
,并进行判断是否为文件。
5.如果是文件,则调用get_image_date_taken
函数获取图片的拍摄日期date_taken
。如果成功获取到日期,就根据日期创建对应的文件夹,并将图片移动到该文件夹中。
6.最后,利用os.replace
方法将图片从原路径移动到新的分类路径,并完成分类操作。
激动人心的测试
跟着小编的脚步,将你的图片带入时间的长河吧!只需要将输入文件夹路径和输出文件夹路径传入classify_images_by_date
函数,Python就能为你将图片按照日期自动分类,慢慢成长。
接下来,我们要开始测试代码了,首先,我们准备一些图片,放在一个文件RNAfovHif夹下:
我们会发现,前面3张不是我们自己拍的照片(滥竽充数的,看看能不能蒙混过关),后面的照片,文件名也是有点乱,甚至有些都看不出是什么时候拍的。
这里再多啰嗦两句,我们深究一下图片的日期究竟是被记录在了哪里:
我们随便选择一张照片,对它右击,选择属性,就跳出了如下所示的一个弹框。然后,我们点详细信息这个选项卡,然后在属性中,找到来源下的拍摄日期,它的值,就是我们实际拍摄照片的时间。
我们再看一下,不是我们自己拍摄的照片,有没有日期呢:
我们看到,这张图片的拍摄日期是空白的。
好了,接下来要执行我们的代码了,激动人心的时刻终于来了。
首先,还是要改一下测试的那行代码,再上面的代码中的最后一行:
# 测试 classify_images_by_date( 'C:/Users/olive/Desktop/待分类的图片', 'C:/Users/olive/Desktop/分类后的图片')
注意,两个文件夹的路径要改成你自己的哦!
好了,接下来就运行一下吧。
很快,几乎没有等待,瞬间完成!
我们看到,此时在我们的桌面上就多了一个【分类后的图片】的文件夹:
非常棒,果然出现了按日期归类的文件夹,我们点开看一下,照片是不是归类进来了:
ok,归类成功!
最后,我们再看下【待分类的图片】的那个文件夹:
果然,不是我们拍的照片,呆在原地了,在我们机智的Python面前,所有的妖精无处遁形,哈哈!
结语
这篇文章让我们一起见证了图片的成长,让这些瞬间在时间的长河里慢慢自由生长、分门别类。希望这个教程能为你的图片分类之旅增添一丝乐趣和意义!
在未来的某一天,你回过头来,会发现这些个个镜头下的瞬间,其实也在悄悄地留下了生日。
到此这篇关于使用Python实现照片按照日期自动分类的操作指南的文章就介绍到这了,更多相关Python照片按日期自动分类内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
精彩评论