スクリプト作成1 ~ ファイルの作成と実行方法
それでは実際にスクリプトを作成していきましょう。
「Adobe\Photoshop 7.0\プリセット\Scripts」に「ResizeOut.js」という空のテキスト・ファイルを作成します(フォルダはPhotoshop 7.0の場合です。お使いのPhotoshopのバージョンによって適宜読みかえてください)。このファイルに、プログラムを書いていきます。
書き終わったプログラムの実行方法は次のとおりです。
- メニューの[ファイル]-[自動処理]-[Scripts...]という項目を選択。
- スクリプト実行ダイアログを表示される。
- 左側のメニューから[ResizeOut]を選択する。
- [Run Script]ボタンを押す。
まだ何も記述していない場合は、スクリプトを実行しても処理は行われません。それでは以下、プログラムを書いていきましょう。
スクリプト作成2 ~ スクリプト解説部、ユーザー変数
「ResizeOut.js」の最初の数行は、「スクリプト解説部」と「ユーザー変数」です。「スクリプト解説部」では、本スクリプトの仕様や用途を解説しています。「ユーザー変数」は、実際の使用に際して、ユーザーが用途に合わせてパラメータを書きかえる部分です。
後で見直した際に、すぐに概要が把握できるように、丁寧に書いておくとよいでしょう。
//---------------------------------------- // // サイズを調整して保存 // //---------------------------------------- // 引数 :なし // 返り値:なし // 仕様 :画像には、縦長や横長のものがある。それらの画像を、指定す // るドット・サイズの長方形に入るようにリサイズする。 // 縦横比は保持する。 // サイズの指定次第で、拡大も縮小も可能。 // // outMaxW // ┌───┐ // │ │ // │ │outMaxH // │ │ // └───┘ // この枠にぴったり入るように、画像をリサイズする。 // // さらに指定クオリティのJPEGと、指定色数のGIFにして別名保存 // する。 // // 保存するファイル名は次のようになる。 // 保存先のフォルダは元のファイルと同じパスになる。 // 「元ファイル名_指定横サイズ_指定縦サイズ_クオリティ.jpg」 // 「元ファイル名_指定横サイズ_指定縦サイズ_色数.gif」 // // 本処理は、開いているファイルすべてに対して実行される。 // // 用途:画像をWeb上などで公開する際に、自由な大きさのサムネール // を作りたいときに使用する。 // //==== ユーザー変数の初期化 ============================================ // var outMaxW = 240; // 出力時の最大横幅 var outMaxH = 200; // 出力時の最大高さ var outQuality = 8; // JPEG出力時のクオリティ(0~12) var outColNo = 16; // GIF出力時の色数(2~256)
スクリプト作成3 ~ 変数の初期化、繰り返し処理
次は「変数の初期化」と「繰り返し処理」です。「変数の初期化」は、文字通りの意味です。「繰り返し処理」には、少し解説が必要でしょう。
Photoshopで開いているファイル1つずつに、手動でスクリプトを実行するのは面倒です。開いているファイルすべてに対し、自動で処理を実行したくなると思います。繰り返し処理は、そのためのループ処理です。1ファイルごとに処理を行いたい場合は、この部分をコメントアウトしてください。
//==== 変数の初期化 ==================================================== // var docNoSum = documents.length; // 開いているファイルの合計数 var docNo; // カウンタ用変数 var strtRulerUnits = preferences.rulerUnits; // スクリプト実行前の単位系 //==== 単位系の変更 ==================================================== // preferences.rulerUnits = Units.PIXELS; // 単位系をピクセルに //---------------------------------------------------------------------- //==== 開いているファイル全部に対して実行 ============================== // for ( docNo = 0; docNo < docNoSum; docNo ++ ) { // // (★ここに実際の処理が入ります★) // } //---------------------------------------------------------------------- //==== 単位系を戻す ==================================================== // preferences.rulerUnits = strtRulerUnits;
特に説明は必要ないと思いますが、一点だけ解説しておいた方が良い場所があります。documents.length
です。このプロパティに、現在開いているファイルの数が格納されています。この値をあらかじめ変数に入れておき、この回数分処理を実行すれば、現在開いている全ファイルに対して処理を実行できます。
以降は、スクリプト中「★ここに実際の処理が入ります★」と書かれている、スクリプトの実処理部分について解説をしていきます。いよいよ、Photoshopのスクリプトの具体的な記述に入ります。
スクリプト作成4 ~ 変数の初期化
再び「変数の初期化」が出てきて戸惑う人がいるかもしれません。これは、「各ファイルへの処理のための変数初期化」部分です。先に出てきたのは「スクリプト全体のための変数の初期化」なので、違うものです。
以下、スクリプトを示します。分かりやすいように、先ほど書いた「繰り返し処理」の部分も一部掲載しておきます。
//==== 開いているファイル全部に対して実行 ============================== // for ( docNo = 0; docNo < docNoSum; docNo ++ ) { //==== 変数の初期化 ================================================ // var srcDoc = activeDocument; // 現在アクティブなドキュメント var myPath = srcDoc.path + "/"; // フォルダのパスの取得 var myName = srcDoc.name.split( "." )[0]; // ファイル名の取得 var saveNameJPG = myName // 保存ファイル名JPG + "_" + outMaxW + "_" + outMaxH + "_" + outQuality; var saveFileJPG = new File( myPath + saveNameJPG ); // 保存パスJPG var saveNameGIF = myName // 保存ファイル名GIF + "_" + outMaxW + "_" + outMaxH + "_" + outColNo; var saveFileGIF = new File( myPath + saveNameGIF ); // 保存パスGIF var newW = 0; // 新規横幅 var newH = 0; // 新規高さ
ここでまず解説が必要なのは、activeDocument
でしょう。Application.activeDocument
を省略した記述です。activeDocument
は、現在アクティブな(最前面にある)ファイルを指し、その実体はDocument
オブジェクトです。
このファイルが保存されているフォルダのパスは、path
プロパティに格納されており、ファイル名がname
プロパティに格納されています。それぞれsrcDoc.path
、srcDoc.name
で取得しています。srcDoc.name.split( "." )[0]
としているのは、ファイル名のドット以前の部分を取得するためです。また、フォルダの区切り文字は「/」になります。
元のファイルと違う名前で保存するために、saveNameJPG
、saveNameGIF
を作成しています。拡張子を書く必要はありません。保存時に自動的に拡張子は付きます。ファイル名を違うものにしたい場合は、この部分を書きかえてください。