让照片找到属于自己的归宿!Python实现照片按照日期自动分类

各位小伙伴们,别看这些张张图片,它们也是有生日的哦!而今天,我们就要教你一招,让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)创建输出文件夹,如果文件夹已存在则不会报错。

4.然后,遍历输入文件夹中的每张图片。对于每张图片,获取图片的完整路径input_path,并进行判断是否为文件。

5.如果是文件,则调用get_image_date_taken函数获取图片的拍摄日期date_taken。如果成功获取到日期,就根据日期创建对应的文件夹,并将图片移动到该文件夹中。

6.最后,利用os.replace方法将图片从原路径移动到新的分类路径,并完成分类操作。

激动人心的测试

跟着小编的脚步,将你的图片带入时间的长河吧!只需要将输入文件夹路径和输出文件夹路径传入classify_images_by_date函数,Python就能为你将图片按照日期自动分类,慢慢成长。

接下来,我们要开始测试代码了,首先,我们准备一些图片,放在一个文件夹下:

我们会发现,前面3张不是我们自己拍的照片(滥竽充数的,看看能不能蒙混过关😄),后面的照片,文件名也是有点乱,甚至有些都看不出是什么时候拍的。

这里再多啰嗦两句,我们深究一下图片的日期究竟是被记录在了哪里:

我们随便选择一张照片,对它右击,选择属性,就跳出了如下所示的一个弹框。然后,我们点详细信息这个选项卡,然后在属性中,找到来源下的拍摄日期,它的值,就是我们实际拍摄照片的时间。

我们再看一下,不是我们自己拍摄的照片,有没有日期呢:

我们看到,这张图片的拍摄日期是空白的。

好了,接下来要执行我们的代码了,激动人心的时刻终于来了。

首先,还是要改一下测试的那行代码,再上面的代码中的最后一行:

# 测试
classify_images_by_date(
    'C:/Users/olive/Desktop/待分类的图片',
    'C:/Users/olive/Desktop/分类后的图片')

注意,两个文件夹的路径要改成你自己的哦!

好了,接下来就运行一下吧。

很快,几乎没有等待,瞬间完成!

我们看到,此时在我们的桌面上就多了一个【分类后的图片】的文件夹:

非常棒,果然出现了按日期归类的文件夹,我们点开看一下,照片是不是归类进来了:

ok,归类成功!

最后,我们再看下【待分类的图片】的那个文件夹:

果然,不是我们拍的照片,呆在原地了,在我们机智的Python面前,所有的妖精无处遁形,哈哈!

结语

这篇文章让我们一起见证了图片的成长,让这些瞬间在时间的长河里慢慢自由生长、分门别类。希望这个教程能为你的图片分类之旅增添一丝乐趣和意义!

在未来的某一天,你回过头来,会发现这些个个镜头下的瞬间,其实也在悄悄地留下了生日。如果有任何问题,或者想要更多有趣的Python教程,都欢迎随时提问哦!加油!📸

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值