python解析照片拍摄时间和地点信息

一、概述

  1. 通常通过手机或相机拍摄的图片中影藏了照片的属性信息和拍摄数据,主要通过EXIF(Exchangeable image file format: 可交换图像文件格式) 进行存储这部分信息
  2. 该部分信息可以被修改,另外也可通过图像信息影藏方式,往图像中写入特定的信息,可用于信息加密等

二、解析图片拍照时间

  • 环境中需要先安装exifread,采用下面命令进行:pip install exifread
import os
import exifread

def getExif(path, filename):
    old_full_file_name = os.path.join(imgpath, filename)
    FIELD = 'EXIF DateTimeOriginal'
    fd = open(old_full_file_name, 'rb')
    tags = exifread.process_file(fd)
    fd.close()
    #显示图片所有的exif信息
    # print("showing res of getExif: \n")
    # print(tags)
    # print("\n\n\n\n");
    if FIELD in tags:
        print("\nstr(tags[FIELD]): %s" %(str(tags[FIELD])))  # 获取到的结果格式类似为:2018:12:07 03:10:34
        print("\nstr(tags[FIELD]).replace(':', '').replace(' ', '_'): %s" %(str(tags[FIELD]).replace(':', '').replace(' ', '_'))) # 获取结果格式类似为:20181207_031034
        print("\nos.path.splitext(filename)[1]: %s" %(os.path.splitext(filename)[1]))  # 获取了图片的格式,结果类似为:.jpg
        new_name = str(tags[FIELD]).replace(':', '').replace(' ', '_') + os.path.splitext(filename)[1]
        print("\nnew_name: %s" %(new_name)) # 20181207_031034.jpg


        time = new_name.split(".")[0][:13]
        new_name2 = new_name.split(".")[0][:8] + '_' +filename
        print("\nfilename: %s" %filename)
        print("\n%s的拍摄时间是: %s年%s月%s日%s时%s分" %(filename,time[0:4],time[4:6],time[6:8],time[9:11],time[11:13]))
        
        # 可对图片进行重命名
        new_full_file_name = os.path.join(imgpath, new_name2)
        #print(old_full_file_name," ---> ", new_full_file_name)    
        # os.rename(old_full_file_name, new_full_file_name)
    else:
        print('No {} found'.format(FIELD),' in: ', old_full_file_name)
        

imgpath = "/home/yph001/python_photo/photo/"
for filename in os.listdir(imgpath):

     # os.path.join用于路径拼接,将imgpath和filename连在一起得到完整的路径,后面的参数可有多个,从第一个以”/”开头的参数开始拼接
    full_file_name = os.path.join(imgpath, filename) 	    
    
    # os.path.isfile用于判断路径指向的是否为文件,相类似的os.path.isdir用于判断是否为文件夹
    if os.path.isfile(full_file_name):
       getExif(imgpath, filename)
       print(full_file_name)
  • 其中,主要通过tags = exifread.process_file(fd) 这个函数读取了图片的exif信息,其中读取的图片信息大致包含以下内容:
{
   'Image ImageWidth': (
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值