基於 macOS 及其 Automator。
由於需要經常處理某些拍攝或下載的圖片、素材,針對不同的處理需求編寫了很多不同的指令碼(例如影像主題色提取演算法、自然場景實驗材料處理工具(2) 等),一般的做法是將指令碼儲存到系統環境目錄下,然後在命令列中執行。但是對於圖片檔案,最方便的方式當然是可以在 Finder 中直接選中並通過右鍵選單執行相應的操作。
在 macOS 系統中,要做到這一點非常容易,甚至不需要額外的程式碼,只需要系統自帶的輔助工具 Automator 即可:
Automator是蘋果公司為他們的Mac OS X系統開發的一款軟體。只要通過點選拖拽滑鼠等操作就可以將一系列動作組合成一個工作流,從而幫助你自動的(可重複的)完成一些複雜的工作。
上圖的右鍵選單中最下方有一欄 Services 子選項,可以通過 Automator 的 Services 服務新增:
在 Automator 的工作介面中,可以從左側選擇對應的動作(Actions), 多個動作組成我們想要觸發的工作流程(Workflow)。在工作流程編輯區上方選擇 Service 物件為圖片檔案,所在的應用環境是 Finder:
接下來選擇針對這一檔案想要執行的指令碼,可以在 Actions 搜尋框中搜尋 shell
,然後將 Run Shell Script 拖入 Workflow,可以在 Shell 選項下面選擇你想要執行的指令碼,並直接在輸入框中輸入指令碼,當然更好的方法是在系統 Shell 環境下執行已經儲存好的 Python 指令碼:
#!/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來傳遞指令碼輸出的結果:
最後儲存這一工作流,即可在右鍵選單中顯示該選項,執行完之後可以在通知欄提示執行結果。
【閱讀原文】