使用AppleScipte进行iPhoto批量enhance

Author Avatar
Kanglai Qian 4月 05, 2013
  • 在其它设备中阅读本文章

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