【python3】批量高速清除JPG图片中的EXIF信息,修改拍摄时间以及作者

目录

只能清除.JPG和.jpg格式结尾的照片信息。

1.1 效果演示

清除后的图片效果
在这里插入图片描述
清除速度
在这里插入图片描述
大量照片时

在这里插入图片描述

1.2 完整源代码

环境说明:
win10、python3.7

依赖:pip install piexif

from PIL import Image
import piexif,os,time

def setDate(photoAddress):
    mytime = str(time.strftime("%Y:%m:%d %H:%M:%S",time.localtime())) 
    #固定格式 mytime = "2013:12:19 10:10:10" ,不能用time.strftime("%Y/%m/%d %H:%M:%S",time.localtime())
    exif_ifd = {
        piexif.ExifIFD.DateTimeOriginal: mytime,
        piexif.ExifIFD.DateTimeDigitized: mytime,
        piexif.ExifIFD.CameraOwnerName:"ken"
    }
    exif_dict = {"Exif": exif_ifd}
    exif_bytes = piexif.dump(exif_dict)
    im = Image.open(photoAddress)
    im.save(photoAddress, exif=exif_bytes)

def setMyInfo(photoAddress):
    im = Image.open(photoAddress)
    exif_dict = piexif.load(im.info["exif"])
    exif_dict["0th"][piexif.ImageIFD.Artist] = "kenwanmao"
    exif_bytes = piexif.dump(exif_dict)
    # newfile = photoAddress
    im.save(photoAddress, exif=exif_bytes)

def clearExif(path):
    startTime = time.time()
    countNums = 0
    # os.walk() 方法用于通过在目录树中游走输出在目录中的文件名
    for root, dirs, files in os.walk(path):
        for name in files:
            if name.endswith(".JPG") or name.endswith(".jpg"):
                photoAddress = os.path.join(root,name)
                print("{},已经被抹去exif信息。".format(photoAddress))
                #调用piexif库的remove函数直接去除exif信息。
                piexif.remove(photoAddress)
                countNums += 1
                # setDate(photoAddress)
                # setMyInfo(photoAddress)

    print("本次程序共清除{}张JPG照片的Exif信息,耗时{:.2f} s".format(countNums,time.time() - startTime))        
    input("\n照片信息处理完毕,按任意键退出...")

if __name__ == "__main__":
    print("欢迎使用EXIF信息清除程序!\n使用规则如下:")
    print("1.可以将本程序放在图片目录下点开使用")
    print("2.将照片目录手动输入\n")
    # 获取当前程序所在的目录
    nowDir = str(os.getcwd()) 
    photoDir = input("手动输入照片目录:") or nowDir
    #启动清除Exif信息函数
    
    clearExif(photoDir)

1.3 参考博客

主要类库piexif的官网
python修改图片exif信息

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
一、安装和使用 Jhead 2.82_绿色英文版 使用时,点击开始菜单-运行命令,在对话框输入: "jhead –命令参数 jpeg文件" 例如: “jhead -de D:\My Pictures\A.jpg” 删除D盘My Pictures文件夹A.jpg文件的exif信息。 “jhead -de D:\My Pictures\*.jpg” 删除D盘My Pictures文件夹所有jpg文件的exif信息。其星号是通配符。 二、通用指令参数 -te 将其他jpeg文件的eixf导入目标jpeg。例如"jhead –te D:\My Pictures\B.jpg D:\My Pictures\A.jpg" -dc 删除jpeg信息的备注。注意,jpeg文件有两个备注,一是和其他文件一样的备注,另一个是exif信息的备注。jhead仅对exif信息有效。 -de 完全删除exif信息。 -du 删除非原始exif信息,例如Photoshop、Turbophoto之类编辑后修改exif留下的信息。 -purejpg 删除所有jpeg文件非必须的信息。相当于-de、-dc和-du的集合,可以将文件减小数k。 -ce 修改文件的jpeg文件头部分备注(此备注并非exif信息)。该指令会打开文本编辑器,并在编辑器关闭时将备注信息存入文件。 -cs 导出备注。例如"jhead –cs D:\1.txt D:\My Pictures\A.jpg" -ci 导入备注。例如"jhead –ci D:\1.txt D:\My Pictures\A.jpg" -cl 直接输入备注。。例如"jhead –cl 我的备注 D:\My Pictures\A.jpg" 三、其他指令 时间日期 -ft 将jpeg文件的“修改时间修改exif信息记录的时间。 -n[] 该指令会将文件名修改exif信息记录的“创建时间”;如果jpeg文件没有exif或者exif的创建时间不可用,则将文件名修改为文件的“修改时间”。 默认的格式-顺序为MMDD-HHMMSS 格式-顺序参数如下: %d-日(01-31) %H-小时(00-23) %j-一年的第几天(001-366) %m-月(01-12) %M-分钟(00-59) %S-秒(00-59) %U-一年的第几周(00-53) %w-星期几(0-6,周日为0) %y-两位数纪年(00-99) %Y-四位数几年 %i-添加数字序号 例如: jhead -n%Y%m%d-%H%M%S d:\*.jpg 将所有jpg文件修改为YYYYMMDD-HHMMSS.jpg的格式。 -nf 与“-n”相同功能相同,不保留原文件名。 -a 修改不同扩展名的同名文件名,相机拍摄的avi短片exif信息存储在与其同名的thm文件,可用此指令给avi文件更名。一般与“-n”指令共同使用。 -ta 修正时差,例如时差根据时区确定,例如+1:00或者-1:00 -da- 修正日期。日期格式是yyyy:mm:dd、yyyy:nn:dd+hh:mm或者 yyyy:mm:dd+hh:mm:ss。根据前后参数时间差调整exif时间。 -ts 直接修改exif拍摄时间,日期-时间格式为yyyy:mm:dd-hh:mm:ss

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值