如何用更高质量的版本替换iPhoto中的图像?


2

我使用Aperture进行照片编辑和处理,但更喜欢iPhoto来保存我的照片库。很长一段时间,我使用iPhoto中的内置工具“从Aperture Library导入”。我不知道的是,这只会导入预览图像,这是四分之一分辨率并且压缩得很严重。我现在有几年的相册,有很多元数据,但图像质量很糟糕。我想用Aperture中更高质量的版本替换图像,而不会丢失所有元数据(标签,描述,面孔等)。最简单的方法是什么?

相关问题:是否可以使用AppleScript访问/更改iPhoto中的图像数据?我可以编写一个脚本来匹配图像并替换它们,如果有这样的机制的话。

Answers:


2

这是我最终解决这个问题的方法。它花了几个步骤,并且需要一些脚本和命令行hackery,但它确实做到了。

  1. 例如,将要更新的图片从Aperture导出到文件夹 ~/Pictures/Updates
  2. 在iPhoto中打开相册
  3. 使用此AppleScript获取主映像的文件名列表

    set output_filename to "/Users/user/Pictures/album.txt"
    
    tell application "iPhoto"
        set pics to photos in current album
        do shell script "echo \"# Current album contents\" > " & output_filename
        repeat with pic in pics
            set picpath to image path of pic
            do shell script "echo " & picpath & " >> " & output_filename
        end repeat
    end tell
    
  4. 使用任何文本编辑器,将下面的脚本保存到 update_pics.sh 并标记它可执行( chmod 755 update_pics.sh 在命令行上)

    #! /bin/bash
    # a quick script to parse in a series of filenames, and update them
    
    input_folder="$1"
    backup_folder="$2"
    
    if [ "$#" -ne 2 ]; then
            echo "Usage: $0 [folder with new images] [folder for backups]"
            exit 0
    fi
    
    if [ ! -d "$input_folder" ]; then
            echo "Can't read input follder $input_folder"
            exit -1
    fi
    
    if [ ! -d "$backup_folder" ]; then
            mkdir -p "$backup_folder"
    fi
    
    if [ ! -d "$backup_folder" -o ! -w "$backup_folder" ]; then
            echo "Can't write to backup folder $backup_folder"
            exit -1
    fi
    
    while read line; do
    
            # skip empty lines or comments
            [ -z "$line" -o "${line:0:1}" = "#" ] && continue
    
            if [ -f "$line" ]; then
                    filename=`basename "$line"`
                    input_file="$input_folder/$filename"
                    cp "$line" "$backup_folder"
                    if [ -f "$input_file" ]; then
                            echo "Replacing $filename"
                            cp "$input_file" "$line"
                    else
                            echo "Could not find input file $input_file"
                    fi
            else
                    echo "$line does not exist"
            fi
    done
    
  5. 要使用该脚本,请为其指定更新图片的位置,放置备份的文件夹(我是丢失数据的偏执),然后在之前生成的文件中进行管道处理。例如:

    update_pics.sh Updates/ Backups/ < album.txt
    
  6. 如果您还没有,请关闭iPhoto。然后在按住Option和Command的同时重新启动它。这应该会给你一个重建iPhoto的对话框。您应该只需要重建缩略图,但您可能想要重建其他所有内容。 有关从Apple重建iPhoto图库的更多信息

iPhoto可能需要很长时间才能重建缩略图,因为它会重做 所有 他们你有很多专辑要做,最好先更新图片,逐个专辑,然后重建图书馆。这就是我做的,而且效果很好。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.