Shell-Scripts/recover-modified-photo-exif.sh

107 lines
3.9 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 这个脚本用于还原 EXIF 数据,传递原始 EXIF 图片的路径(第一个参数),还原修改过 EXIF 的图片的路径(第二个参数)
# Example: ./recover-modified-photo-exif.sh /Volumes/未命名导出 .
# 检查参数
if [ "$#" -ne 2 ]; then
echo "用法: $0 <源文件夹路径> <被修改的文件夹路径>"
exit 1
fi
SOURCE_DIR="$1"
TARGET_DIR="$2"
SUCCEED_DIR="$TARGET_DIR/succeed"
# 检查并创建 succeed 目录
if [ ! -d "$SUCCEED_DIR" ]; then
mkdir -p "$SUCCEED_DIR"
echo "创建 succeed 目录: $SUCCEED_DIR"
fi
# 处理被修改的文件夹中的所有 PNG 文件
for png_file in "$TARGET_DIR"/*.png; do
# 跳过 succeed 目录中的文件
if [[ "$png_file" == *"/succeed/"* ]]; then
continue
fi
# 检查文件是否存在(防止没有 png 文件时报错)
if [ ! -f "$png_file" ]; then
continue
fi
# 获取文件名(不包括路径和扩展名)
filename=$(basename "$png_file")
base_filename="${filename%.png}"
jpg_file="$TARGET_DIR/$base_filename.jpg"
succeed_jpg_file="$SUCCEED_DIR/$base_filename.jpg"
# 如果当前目录或 succeed 目录下同名 JPG 文件已存在,则跳过
if [ -f "$jpg_file" ] || [ -f "$succeed_jpg_file" ]; then
echo "$jpg_file$succeed_jpg_file 已存在,跳过 PNG 转换"
continue
fi
# 使用 ImageMagick 的 convert 命令将 PNG 转换为 JPG设置质量为100无压缩
convert "$png_file" -quality 100 "$jpg_file"
echo "$filename 已转换为 JPG: $jpg_file"
done
# 遍历被修改的文件夹中的所有 JPG 文件
for target_file in "$TARGET_DIR"/*.jpg; do
# 跳过 succeed 目录中的文件
if [[ "$target_file" == *"/succeed/"* ]]; then
continue
fi
# 获取文件名(不包括路径)
filename=$(basename "$target_file")
# 去掉 .jpg 后缀以便查找源文件
base_filename="${filename%.jpg}"
# 检查源文件夹中是否存在同名文件
if [ -f "$SOURCE_DIR/$filename" ]; then
# 使用 exiftool 复制 EXIF 信息
exiftool -overwrite_original -all= -UserComment= -tagsFromFile "$SOURCE_DIR/$filename" "$target_file"
mv "$target_file" "$SUCCEED_DIR/"
echo "jpg 匹配成功,已移动到 succeed 文件夹"
# 检查源文件夹中是否存在同名的 HEIF 文件
elif [ -f "$SOURCE_DIR/$base_filename.heic" ]; then
# 使用 exiftool 复制 EXIF 信息
exiftool -overwrite_original -tagsFromFile "$SOURCE_DIR/$base_filename.heic" "$target_file"
mv "$target_file" "$SUCCEED_DIR/"
echo "heic 匹配成功,已移动到 succeed 文件夹"
elif [ -f "$SOURCE_DIR/$base_filename.heif" ]; then
# 使用 exiftool 复制 EXIF 信息
exiftool -overwrite_original -tagsFromFile "$SOURCE_DIR/$base_filename.heif" "$target_file"
mv "$target_file" "$SUCCEED_DIR/"
echo "heif 匹配成功,已移动到 succeed 文件夹"
elif [ -f "$SOURCE_DIR/$base_filename.HIF" ]; then
# 使用 exiftool 复制 EXIF 信息
exiftool -overwrite_original -tagsFromFile "$SOURCE_DIR/$base_filename.HIF" "$target_file"
mv "$target_file" "$SUCCEED_DIR/"
echo "HIF 匹配成功,已移动到 succeed 文件夹"
else
echo "$filename 未找到,保留在原位置"
fi
done
# 处理被修改的文件夹中的所有大写 JPG 文件
for target_file in "$TARGET_DIR"/*.JPG; do
# 跳过 succeed 目录中的文件
if [[ "$target_file" == *"/succeed/"* ]]; then
continue
fi
# 获取文件名(不包括路径)
filename=$(basename "$target_file")
# 执行 exiftool 命令去除 GPS 信息并设置作者,删除美图秀秀生成的备注信息
exiftool -overwrite_original -UserComment= -gps:all= -artist="奇趣保罗" -CreatorTool= "$target_file"
done
echo "EXIF 信息更新完成!"