Automator + Python

基于 macOS 及其 Automator。

由于需要经常处理某些拍摄或下载的图片、素材,针对不同的处理需求编写了很多不同的脚本(例如图像主题色提取算法自然场景实验材料处理工具(2) 等),一般的做法是将脚本保存到系统环境目录下,然后在命令行中执行。但是对于图片文件,最方便的方式当然是可以在 Finder 中直接选中并通过右键菜单执行相应的操作。

Screen Shot 2017-01-05 at 8.25.05 PM.png

在 macOS 系统中,要做到这一点非常容易,甚至不需要额外的代码,只需要系统自带的辅助工具 Automator 即可:

Automator是苹果公司为他们的Mac OS X系统开发的一款软件。只要通过点击拖拽鼠标等操作就可以将一系列动作组合成一个工作流,从而帮助你自动的(可重复的)完成一些复杂的工作。

Auto.png

上图的右键菜单中最下方有一栏 Services 子选项,可以通过 Automator 的 Services 服务添加:

Untitled.jpg

在 Automator 的工作界面中,可以从左侧选择对应的动作(Actions), 多个动作组成我们想要触发的工作流程(Workflow)。在工作流程编辑区上方选择 Service 对象为图片文件,所在的应用环境是 Finder

Screen_Shot_2017-01-05_at_8_42_11_PM.jpg

接下来选择针对这一文件想要执行的脚本,可以在 Actions 搜索框中搜索 shell,然后将 Run Shell Script 拖入 Workflow,可以在 Shell 选项下面选择你想要执行的脚本,并直接在输入框中输入脚本,当然更好的方法是在系统 Shell 环境下执行已经保存好的 Python 脚本:

Screen_Shot_2017-01-05_at_8_48_27_PM.jpg

#!/usr/local/bin/python3

import sys
import os

for f in sys.stdin:
    filename = f.strip()
    if os.path.isfile(filename):
        # some operations here
        print(os.path.basename(filename))
    else:
        print("Image {} not found!".format(filename))

保存脚本并添加可执行权限。为了看到执行结果,可以添加Display Notification动作,同时可以插入一个Set Value of Variable来传递脚本输出的结果:

Pix_-_啥也没干.jpg

最后保存这一工作流,即可在右键菜单中显示该选项,执行完之后可以在通知栏提示执行结果。

2017-01-05 21_32_39.gif