ImageMagick+Automatorで画像合成のショートカットアプリを作る【MacOS】

 コンピュータ 写真  568

デジタル画像をコマンドラインから編集できるフリーソフトウェアの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



関連記事