107 lines
3.9 KiB
Bash
Executable File
107 lines
3.9 KiB
Bash
Executable File
#!/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 信息更新完成!"
|
||
|