ImageMagick+Automatorで画像合成のショートカットアプリを作る【MacOS】
デジタル画像をコマンドラインから編集できるフリーソフトウェアのImageMagickと、MacのAutomatorを使って、簡単に画像合成が出来るようにした。
複数枚の写真をドラッグ&ドロップしてAutomatorで作成したアプリを起動させるだけで、加算、比較明合成、比較暗合成の3種類のうち1つを選んで画像合成ができる。
<比較暗合成のサンプル>
<作り方>
AutomatorでApplicationを作成する。
AppleScriptで画像合成の種類を選ぶダイアログを表示するスクリプト、ShellScriptでImageMagickのconvertコマンドを実行するスクリプトをそれぞれ作成する。
AppleScriptのソースコード。
on run argv
set str to ""
set ComposeChoices to {"加算", "比較明合成", "比較暗合成"}
set SelectedCompose to choose from list ComposeChoices with prompt "合成方法を選択してください:" default items {"比較明合成"}
repeat with arg in (item 1 of argv)
set filePath to alias (arg as text)
if filePath is not "" then
set str to (str & " " & replaceText((convertPathToPOSIXString(filePath) as text), " ", " ")) & ""
#スペースのescape問題は保留。
end if
end repeat
if str is not "" then
if SelectedCompose is {"加算"} then
set str to (str & " -compose plus")
end if
if SelectedCompose is {"比較明合成"} then
set str to (str & " -compose lighten")
end if
if SelectedCompose is {"比較暗合成"} then
set str to (str & " -compose darken")
end if
set str to (str & " -background none -flatten output.jpg")
return str
end if
end run
#https://developer.apple.com/library/archive/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/ReferenceFilesandFolders.html
on convertPathToPOSIXString(thePath)
tell application "System Events"
try
set thePath to path of disk item (thePath as string)
on error
set thePath to path of thePath
end try
end tell
return POSIX path of thePath
end convertPathToPOSIXString
#http://tonbi.jp/AppleScript/Tips/String/FindReplace.html
on replaceText(theText, serchStr, replaceStr)
set tmp to AppleScript's text item delimiters
set AppleScript's text item delimiters to serchStr
set theList to every text item of theText
set AppleScript's text item delimiters to replaceStr
set theText to theList as string
set AppleScript's text item delimiters to tmp
return theText
end replaceText
Shell Scriptのソースコード
cd Desktop/
/opt/homebrew/bin/convert $@
後はアプリに名前をつけて保存して完成。
使い方は、複数枚の写真をドラッグ&ドロップして作ったアプリに重ねるだけ。
選択した方法で合成された画像がデスクトップ上にoutput.jpgとして保存される。
<改善が必要なこと>
・ファイル名に半角スペースを含む画像を使うとエラーになる。""とか\\でエスケープすれば良いはずだが、上手くいかず未解決のまま。
・もっと実用性があるものにするには、写真サイズを自動で同じサイズに調整したり、写真の向きを揃えたりする必要がある。
<参考HP>
画像合成 - ニコンオンラインマニュアル
https://onlinemanual.nikonimglib.com/z5/ja/09_menu_guide_07_10.html
関連記事