使用AppleScipte进行iPhoto批量enhance

嗯,这是拖了很久的一篇日志了上个暑假实习的时候做的事情是照片的自动增强,与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

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

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

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

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

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