RGB画像をCMYKに変換したい [AppleScript辞書はつくれるか?]
RGB画像をCMYKに変換する方法を考えてみる。
PhotoshopなどのAdobe製の画像ソフトを使えば簡単に変換ができるのですが、それは使わない方法を探してみようと思います。
-目次-
(1)ターミナルやシェルスクリプトから試してみる
(2)ColorSyncユーティリティを使う方法
(3)ColorSyncユーティリティをApplescriptでコントロールしてみる
(4)もっと簡単な方法がある
(1)ターミナルやシェルスクリプトから試してみる |
色々なサイトで書かれているのがターミナルを使う方法。
|
$ sips -M JapanColor2001Coated.icc relative ~/Desktop/RGB.tif --out ~/Desktop/output.tif |
が、なぜか エラーを吐いてエラーを吐いて失敗する。
|
do shell script "sips -M JapanColor2001Coated.icc relative ~/Desktop/RGB.tif --out ~/Desktop/CMYK.tif ;" |
当然、Applescriptを使っても失敗する。
error "Error: Profile at JapanColor2001Coated.icc cannot be opened Error: Invalid profile Error 13: an unknown error occurred Try 'sips --help' for help using this tool" number 13 |
JapanColor2001Coatedは使えないと出てくる。
そもそも、sipsコマンドが使えないのかと思えば、グレー変換(Generic Gray Profile.icc)は実験をしたら使えているので理由がわからない。
色々試行錯誤するも、
|
do shell script "sips -E 'sRGB Profile.icc' -M JapanColor2001Coated.icc relative ~/Desktop/RGB.tif --out ~/Desktop/CMYK.tif ;" |
|
do shell script "a=`sips -g all ~/Desktop/RGB.tif | grep -e 'profile:' | cut -d ':' -f2- | cut -c2-` ; sips -E \"$a\" -M JapanColor2001Coated.icc ~/Desktop/RGB.tif --out ~/Desktop/CMYK.tif ;" |
全て、JapanColor2001Coated.iccが使えないというエラーを吐く。
JapanColor2001Coated.iccがそもそもないのかと思い、ColorSyncユーティリティを見ると存在はする。
壊れているのかと思い修復も試みるが、修復が成功しているのにエラーは変わらない。
なので、この方法は諦めました。
ということで、別な方法を試みてみる事にします。
(2)ColorSyncユーティリティを使う方法 |
ColorSyncユーティリティというアプリケーションで変換してみる。
これなら、ちゃんと変換されているので保存をすれば終わり。
変換はすぐ終わりますが、これが複数あったら、繰り返しやらなければいけない。
ここはやっぱりApplescriptでやろう。
(3)ColorSyncユーティリティをApplescriptでコントロールしてみる |
Applescriptでコントロールをすると言ってみたものの、じつは、ColorSyncユーティリティはApplescriptに非対応なのです。
いきなり挫けたか?
いやいや、Applescriptに非対応と言っても、MacOS上で動いているアプリケーションであればなんとかなります。
直接ではなくSystem Eventsを使えばコントロールはできます。面倒ではありますけどね。
property colorProfileName : "Japan Color 2001 Coated" --変更したいICC profile名 (* アプリケーションを直接に実行した直後の処理 *) on run set choosedFiles to choose file with multiple selections allowed --ファイルを選択(複数選択が可能) my main(choosedFiles) --選択されたファイルをmainハンドラに送ります end run
(* ドラック&ドロップされたファイルを処理します (スクリプトをアプリケーション形式で保存する必要があり) *) on open inputFile my main(inputFile) --ドロップされたファイルをmainハンドラに送ります end open
-- on main(inputFile) repeat with add in inputFile --複数または単体で送られてきたファイルを1つづつ選びながら繰り返します set f to my henkan(add) --henkanハンドラに選ばれた指定のファイルを送り、結果を変数fに受け取ります if f ≠ true then --結果のfの内容がtrue以外の場合は、if・・・end if の間のエラー処理をします activate --ダイアログを見やすくするためのアクティブ命令をあらかじめしておきます display dialog ("エラーが発生しました:" & return & f) buttons {"中止"} default button 1 --> ダイアログでエラーメッセージを表示します return -- 中断します end if end repeat end main
on henkan(add) try (* ファイルアドレスの変換 *) set filePath to add as text --送られてきたファイルをテキスト化することでアドレスのみを取得できる if filePath contains "/" then --アドレスがPosixPathだった場合 set filePath to (filePath as POSIX file) as text -- ファイルパスに変更して統一します else if not (filePath contains ":") then -- PosixPathでもファイルパスでも無い場合 return "ファイルのアドレスが確認できません" -- 中断してメッセージを返します end if
tell application "Finder" -- Finderアプリケーションで作業します set originalName to name of file filePath -- 送られてきたオリジナルのファイル名を取得します copy file filePath to (folder of file filePath) -- オリジナルを壊さないために複製を作ります set obj to result -- 複製後のファイルの情報を記憶します end tell set filePath to obj as text -- 複製した方のファイルのパスを作業用として改めて取得します
(* ColorSyncユーティリティで画像を開く *) tell application "ColorSync Utility" --ColorSyncユーティリティで作業をします launch --ColorSyncユーティリティの着手を宣言します(省略しても良さそう) try tell application "System Events" to click button 1 of window 1 of process "ColorSync Utility" --いらないウインドウがあれば閉じておきます end try open filePath --画像ファイルをColorSyncユーティリティで開きます end tell activate application "ColorSync Utility" --ColorSyncユーティリティを最前面に出します(アクティブ化) tell application "System Events" --システムイベントで作業をします tell process "ColorSync Utility" -- ColorSyncユーティリティのプロセスでの作業を選びます set ans to value of pop up button 1 of group 1 of window 1 -- プロファイル設定の方向性のメニュー内容を取得します if ans ≠ "プロファイルに合わせる" then -- "プロファイルに合わせる"意外であれば再設定をしておきます click pop up button 1 of group 1 of window 1 -- メニューを開きます click menu item "プロファイルに合わせる" of menu 1 of pop up button 1 of group 1 of window 1 --選択しなおします end if set profileMenu to name of menu button 1 of group 1 of window 1 --プロファイル設定のプルダウンメニューの現在の状態を取得 if profileMenu ≠ colorProfileName then --希望のプロファイル以外だった場合の処理 click menu button 1 of group 1 of window 1 --プロファイル設定用のプルダウンメニューをクリック key code 126 --キーボートの上向き矢印キー(↑)を疑似入力 key code 124 --キーボートの右向き矢印キー(→)を疑似入力 try click menu item colorProfileName of menu "出力" of menu item "出力" of menu 1 of menu button 1 of ¬ group 1 of window 1 --メニュー内の希望のプロファイルを選択 on error return "Err : プロファイル名が認識できません。" --希望のプロファイルが見つからない場合は中断 end try click button "適用" of group 1 of window 1 --適用ボタンをクリック keystroke "s" using command down -- コマンド+S で『保存』を実行
--close window 1 --|なぜかクローズ命令が受け付けてもらえない| click button 1 of window 1 --なので、ウインドウ左上のクローズボタンをクリックして対応
end if end tell end tell tell application "Finder" set saveName to "『" & (text 1 thru ((offset in originalName of ".") - 1) of originalName) & "』をCMYKに変更" & (text (offset in originalName of ".") thru -1 of originalName) --> saveName = "『(元のファイル名)』をCMYKに変更.(拡張子)" try move (file saveName of (folder of file filePath)) to trash --すでにファイルが存在した場合、古いファイルはゴミ箱へ end try set name of file filePath to saveName --ファイル名の変更 end tell on error errText return errText --予期しない何らかのエラ~メッセージを返します end try return true end henkan |
(4)もっと簡単な方法がある(結構あっさり解決) |
Automator.appを使えば割とあっさりと簡単にはできるんです。
Automatorで新規書類(新規アプリケーション)を作成します。
空のウインドウの上部に『入力してファイルやフォルダを受け取ります』とあるので、その下に、
左のライブラリー項目の中から『(ファインダの)Finder項目を複製』または『(ファインダの)Finder項目をコピー』をドラック&ドロップで追加します。(どちらでもOK)
※『Finder項目を複製』は元のファイルと同じフォルダ内に複製します。
※『Finder項目をコピー』は任意のフォルダにコピーをする違いがあります。
次に『(ユーティリティの)ColorSyncプロファイルをイメージに適応』を追加し、プロファイル:の項目を”Japan Color 2001 Coated”に変更する。
最後に『(ファインダの)Finder項目の名前を変更』を挿入し、ポップアップメニューの中から『テキストを追加』を選びます。
追加するテキスト:を『をCMYKに変更』にし、『名前の後に追加』に変更(ここは、自分の好みで変更してみると良い)
あとは保存するだけで、ドロップレットアプリケーションが作成されます。
以上のいずれも、選択された画像がイメージファイル(画像ファイル)かどうかを判断する部分がありませんので、対象外のファイルが選ばれると予期せぬエラーが発生する場合があります。この辺りは注意するか、スクリプトを加えてみると良いかもしれません。
コメント 0