準備2 ~ Scripting plug-inの実行確認
スクリプトの実行方法
Scripting plug-inの実行を確認してみましょう。メニューの[ファイル]-[自動処理]-[Scripts...]という項目を選択します。
[Scripts...]を選択すると、スクリプトを選択するダイアログが開きます。
左側のリストからスクリプトを選択して[Run Script]ボタンをクリックするとスクリプトが実行されます。このボタンの名前は、PhotoshopScriptingのバージョンによっては日本語になっているかもしれません。このボタンを押すときに、[ALT]キーを押すと、[Run Script]ボタンの名前が[Debug Script]に変わり、デバッグモードでスクリプトを実行することができます。
また、左側のリスト以外のスクリプトを実行したい場合は[Browse]ボタンをクリックします。すると、ファイル選択ダイアログが開き、好きなスクリプトを選択できるようになります。
スクリプト機能の基本的な使い方は以上です。
自作スクリプトを左側のリストに登録する
さて、毎回[Browse]ボタンをクリックするのは面倒です。左側のリストに、自分で書いたスクリプトを登録しておけると便利なので、ここではその方法を説明します。これは、特定のフォルダにスクリプトを保存すればよいだけです。
スクリプトを保存するフォルダは、Photoshop 7.0の場合は「Adobe\Photoshop 7.0\プリセット\Scripts」となります(フォルダ名は、お使いのPhotoshopのバージョンによって適宜読みかえてください)。このフォルダにスクリプトのファイルを保存すると、スクリプト実行ダイアログの左側のリストに、ファイルが登録されます。
基礎知識:Scripting plug-inのマニュアルの読み方
前提
使用しているPhotoshopのバージョンによっては日本語版のマニュアルが付いているかもしれません。ここでは、英語版のマニュアルを元に解説を行いますが、基本的には日本語版でも把握の仕方は同じです。
PhotoshopのScripting plug-inではJavaScript以外にも、VBなどさまざまなプログラム言語で制御を行うことができます。しかし、ここではJavaScriptに限って説明を行います。
「HTMLファイル向けのJavaScript」と同じ点、違う点
プログラムの基本は、HTMLファイルなどで使用するJavaScriptと基本的に同じです。HTMLファイルのJavaScriptでwindow.alert("Hellow World!");
(windows
は省略可能)と書くのと同じように、PhotoshopのスクリプトでもApplication.alert("Hellow World!");
(Application
は省略可能)と書くことで、メッセージ・ダイアログを表示することができます。
基本的な書き方はまったく同じです。違う点は、利用できるオブジェクト(window.document
やwindow.location
など)の種類が異なることです。
また、もう1つ違う点は、各オブジェクトに用意されているメソッド(関数)の引数に「専用に使うオブジェクト」が用意されている点です。これは、Enumerationと呼ばれます(Enumerationは日本語で列挙、一覧表という意味です)。
「Photoshop Scripting 1.0.2\Documentation」に格納されている、JavaScript用のマニュアル「JavaScript Reference.pdf」では、通常のオブジェクトと区別してEnumerationが掲載されています。
このEnumerationを具体的にどう使うか、実例を元に説明しましょう。
//==== サイズの変更 ==================================================== // activeDocument.resizeImage( // サイズの変更 newW, // 横幅 newH, // 高さ pasteDoc.resolution, // 解像度 ResampleMethod.BICUBIC ); // 縮小形式
上記のスクリプトでは、activeDocument
というDocument
形式のオブジェクトのresizeImage()
メソッドを実行しています。このスクリプトのなかで、ResampleMethod
がEnumerationになります。
これは、ResampleMethod.BICUBIC
やResampleMethod.BILINEAR
といった、「引数用のパラメータ」だけを持ったオブジェクトになります。
実際にマニュアル中で、どのようにObjectとEnumerationが記載されているか、キャプチャー画像を掲載しておきます。まずはEnumerationです。
Enumerationは、BitmapHalfToneType.CROSS
やBitmapHalfToneType.DIAMOND
などのようにして、オブジェクトのメソッドの引数として使います。
通常のオブジェクトには、プロパティとメソッド(関数)があります。このタイプのオブジェクトは、HTMLファイル向けのJavaScriptでもおなじみだと思います。
注意を要する点 ~ 引数として用いられるオブジェクト
オブジェクトの中には、オブジェクトを引数として要求するものがあります。このとき、引数として複数種類のオブジェクトを入れることが可能なものもあります。HTMLファイルのJavaScriptだけしか使ったことがない人は、この部分で戸惑うかもしれません。以下、簡単に紹介しておきます。
//==== 変数の初期化 ==================================================== // var myPath = activeDocument.path + "/"; // フォルダのパスの取得 var saveFile = new File( myPath + "new_file" ); // 保存パス //==== JPEGで保存 ====================================================== // var jpgSaveOpt = new JPEGSaveOptions(); // JPEG保存設定 activeDocument.saveAs( // 保存 saveFile, // 保存パス jpgSaveOpt, // GIF保存設定 true, // 複製保存 Extension.LOWERCASE ); // 拡張子は小文字 //==== GIFで保存 ======================================================= // var gifSaveOpt = new GIFSaveOptions(); // GIF保存設定 activeDocument.saveAs( // 保存 saveFile, // 保存パス gifSaveOpt, // GIF保存設定 true, // 複製保存 Extension.LOWERCASE ); // 拡張子は小文字
activeDocument
のメソッドの中で、ファイル保存を行うsaveAs()
の引数として使用する「保存設定」には、さまざまなファイル形式の「保存設定オブジェクト」が入ります。上記の例では、JPEGSaveOptions
とGIFSaveOptions
という、異なったオブジェクトを指定しています。
マニュアルのsaveAs()
メソッドの項には、ただ単に「Object」としか書かれていないので戸惑うかもしれません。適宜、対応するオブジェクトを代入することになります。
このように、引数として複数種類のオブジェクトを代入できるメソッドが多数あります。こういったメソッドの存在を知らなければ、マニュアルを見ても意味が分からないと思いますので紹介しておきます。