嗯,这是拖了很久的一篇日志了~上个暑假实习的时候做的事情是照片的自动增强,与iPhoto的enhance进行了比较。但是需要生成几千张照片的批量enhance比较麻烦~

网上其实有iPhoto Batch Enhancer可以实现这个功能,但需要付费。它本身也是用AppleScript实现的,经过一番研究我也自己倒腾了出来。

 

tell application "iPhoto"
     my enabledGUIScripting(true)
     activate
     set thePhotos to (get the selection) as list
     repeat with aPhoto in thePhotos
          select aPhoto
          my enhance(aPhoto)
     end repeat
end tell


on enhance(this_image)
     tell application "System Events"
          tell process "iPhoto"
               --key short!
               keystroke "e" using command down
               --From UIBrowser
               click button "Enhance" of group 2 of window "iPhoto"
               keystroke return
          end tell
     end tell
end enhance


-- Generated by UIBrowser
on enabledGUIScripting(switch)
     tell application "System Events"
          activate-- brings System Events authentication dialog to front
          set UI elements enabled to switch
          return UI elements enabled
     end tell
end enabledGUIScripting

applescript3

简单解释一下代码:这段applescript做了三件事

  1. 获取当前选中的照片列表,遍历选中每个照片
  2. command+e进入编辑模式
  3. 点enhance按钮

但是在做的时候发现一个问题,不同(语言)的iPhoto的按钮不一样,这时候就需要微调脚本,使得能够正确选择

 
click button "Enhance" of group 2 of window "iPhoto"

我是使用的UIBrowser来进行抓取对应的按钮,见下图

applescript1

applescript2