将照片导入iPhone并保留时刻信息

由于Android对EXIF信息的管理混乱,导致Android转iPhone后在相册看照片时间线一片混乱,特开此篇

🔧准备工具

  • ACDSee
  • ExifTool
  • Advance Renamer
  • 爱思助手

修改图片EXIF信息

先用Advance Renamer把残留在文件名的日期写进修改日期里

在ACDSee中把修改日期写进EXIF日期

修改视频metadata信息

将带有YY:MM:DD HH:MM:SS日期信息文件名写入meatdata信息

//更改QuickTime track1 track2 信息
exiftool -overwrite_original -ext mp4 "-track1:TrackCreateDate<filename" "-track1:TrackModifyDate<filename" "-track1:MediaCreateDate<filename" "-track1:MediaModifyDate<filename" "-track2:TrackCreateDate<filename" "-track2:TrackModifyDate<filename" "-track2:MediaCreateDate<filename" "-track2:MediaModifyDate<filename" "-QuickTime:CreateDate<filename" "-QuickTime:ModifyDate<filename" .

//查看mp4 metadata信息
exiftool -s -G1 -a -u -U -l -ext mp4 .

写入时区信息,根据你所在的时区(这里取巧了只是全部时间减去8小时,有好的办法欢迎大家讨论)

//写入当前时区信息
exiftool -AllDates-=8 -overwrite_original -ext mp4 .

途中要是遇到以unix timestamp命名的(fkkkkk wechat),可以用python先转换

//unix timestamp to YY:MM:DD HH:MM:SS
import os
import datetime

directory = r'D:\exifphoto\test'
hz = '.jpg'
files_processed = 0
files_successfully_processed = 0

for filename in os.listdir(directory):
    if not filename.endswith(hz):
        continue

    files_processed += 1

    timestamp = filename.split(".")[0]

    if not timestamp.isdigit() or len(timestamp) != 13:
        continue

    timestamp_ms = int(os.path.splitext(filename)[0])
    timestamp = datetime.datetime.fromtimestamp(timestamp_ms / 1000.0)
    new_filename = timestamp.strftime('%Y-%m-%d %H-%M-%S') + hz
    old_path = os.path.join(directory, filename)
    new_path = os.path.join(directory, new_filename)

    try:
        os.rename(old_path, new_path)
        files_successfully_processed += 1
    except OSError as e:
        print(f"Failed to process file: {filename}. Error: {e}")

print(f"Total files processed: {files_processed}")
print(f"Total files successfully processed: {files_successfully_processed}")

wx_camera_或mmexport开头的,先

//文件名包含unix timestamp的,先转成13位unix timestamp
import os
import sys

sys.stdout.reconfigure(encoding='utf-8')

folder_path = r'D:\exifphoto\test'  # 文件夹路径
prefixes = ["wx_camera_", "mmexport","idlefish-msg-"]  # 需要清除的前缀列表

total_count = 0
success_count = 0

for filename in os.listdir(folder_path):
    if filename.startswith(tuple(prefixes)):
        new_filename = filename
        for prefix in prefixes:
            new_filename = new_filename.lstrip(prefix)
        
        old_filepath = os.path.join(folder_path, filename)
        new_filepath = os.path.join(folder_path, new_filename)
        
        try:
            os.rename(old_filepath, new_filepath)
            success_count += 1
        except Exception as e:
            print(f"无法重命名文件 {filename}: {str(e)}")

        total_count += 1

print(f"共处理了 {total_count} 个文件,成功处理了 {success_count} 个文件。")

爱思助手导入

一个一个文件夹的用爱思导入到相册,确认日期无误了再转到其他相册,每导一次一定要另起文件夹储存,否则会在爱思的相册累加的,除非你只有一个文件夹的照片

文件夹过大的,可能经常导入中断

拆成若干小文件夹

posted @ 2024-02-15 22:17  kimeray  阅读(499)  评论(0)    收藏  举报