如何在Apple Photos中按分辨率批量删除低分辨率重复照片?
批量删除Photos.app中低分辨率重复照片的方法
这个问题确实戳中了普通重复文件工具的盲区——它们大多依赖文件哈希、文件名或者精确的像素匹配,而分辨率半幅的重复项就会被漏掉。好在Photos.app本身就有工具能解决这个问题,给你两种靠谱的方法:
方法一:用智能相册精准筛选(适合所有用户)
这是最安全直观的方式,利用Photos的智能相册功能锁定低分辨率照片:
- 打开Photos.app,点击左上角文件 > 新建智能相册(iPhone上则是进入「相册」标签页,点击右上角「+」选择「新建智能相册」)。
- 设置筛选条件:
- 第一个条件选择「媒体类型」>「照片」,确保只筛选照片文件。
- 点击「+」添加第二个条件:选择「宽度」>「小于」,输入你原版照片宽度的一半(比如iPhone常见原版宽度是4032,那就输入2016)。
- 再添加第三个条件:选择「高度」>「小于」,输入原版照片高度的一半(比如原版高度3024,输入1512)。
- (可选)如果低分辨率照片都来自iCloud共享相册,可以再加一个条件「来源」>「iCloud共享相册」,进一步缩小范围,避免误筛。
- 创建完成后,智能相册里会自动列出所有符合条件的低分辨率照片。全选这些照片(Mac上用
Cmd+A,iPhone上长按一张后滑选所有),然后按Delete键删除即可。
方法二:终端命令批量处理(适合有技术基础的用户)
如果你的Photos库存储在本地Mac上,可以用终端命令精准定位并删除低分辨率照片,效率更高:
- 先完全关闭Photos.app,确保库文件没有被占用。
- 打开终端,执行以下命令(先运行带
echo的版本确认目标文件,没问题再替换成删除命令):
# 先列出所有符合条件的低分辨率照片,确认无误再执行删除 find ~/Pictures/Photos\ Library.photoslibrary/Masters -type f \( -iname "*.jpg" -o -iname "*.png" -o -iname "*.heic" \) | while read file; do width=$(sips -g pixelWidth "$file" | awk '/pixelWidth/ {print $2}') height=$(sips -g pixelHeight "$file" | awk '/pixelHeight/ {print $2}') if [ "$width" -lt 2016 ] && [ "$height" -lt 1512 ]; then echo "$file" # 确认后去掉下面一行的注释,执行删除 # osascript -e 'tell application "Photos" to delete (get media items whose filename is "'$(basename "$file")'")' fi done
- 替换数值:把命令中的
2016和1512改成你原版照片分辨率的一半,确保筛选准确。
重要注意事项
- 操作前一定要备份:复制整个
Photos Library.photoslibrary文件夹到外接硬盘,防止误删重要照片。 - 调整分辨率阈值:根据你实际的原版照片分辨率修改筛选数值,比如如果原版是2732×2048,就把阈值改成1366×1024。
- iPhone端的话,智能相册方法完全适用,操作逻辑和Mac一致,只是界面按钮位置略有不同。
内容的提问来源于stack exchange,提问作者Downgoat




