Як замінити зображення у програмі iPhoto на більш якісні версії?


2

Я використовую Aperture для редагування та обробки фотографій, але віддаю перевагу iPhoto для зберігання галереї моїх фотографій. Довгий час я використовував вбудовані інструменти в iPhoto для "Імпорт з бібліотеки діафрагми". Що я не знав, що це тільки імпортувати попередній перегляд, який знаходиться на чверть резолюції і погано стиснутий. Тепер у мене є кілька років вартості альбомів з великою кількістю метаданих, але з дерьмовою якістю зображення. Я хотів би замінити зображення на більш якісні версії з Aperture, не втрачаючи всі метадані (теги, описи, обличчя тощо). Який найпростіший спосіб це зробити?

Пов'язане питання: чи можна отримати доступ до / змінити дані зображення в iPhoto за допомогою AppleScript? Я можу написати сценарій, щоб відповідати образам і замінити їх, якщо є механізм для цього.

Відповіді:


2

Ось як я врешті-решт вирішив цю проблему. Це зайняло декілька кроків, і вимагає деяких скриптів і командного рядка, але це зробило трюк.

  1. Експортуйте зображення, які потрібно оновити з діафрагми, у папку, скажімо ~/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. Потрібно лише відновити мініатюри, хоча ви можете відновити все інше. Докладніше про відновлення бібліотеки iPhoto від Apple

iPhoto, ймовірно, займе багато часу, щоб відновити ескізи, оскільки це буде повторно все їх. У вас є кілька альбомів, можливо, краще спочатку оновити картинки, спочатку альбом за альбомом, а потім відновити бібліотеку. Ось що я і зробив, і це спрацювало дуже добре.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.