SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

Photoshopのスクリプト制御

JavaScriptを利用したバッチ処理によるサムネイル画像の自動生成

  • X ポスト
  • このエントリーをはてなブックマークに追加

準備2 ~ Scripting plug-inの実行確認

スクリプトの実行方法

 Scripting plug-inの実行を確認してみましょう。メニューの[ファイル]-[自動処理]-[Scripts...]という項目を選択します。

Scripting plug-inの実行
Scripting plug-inの実行

 [Scripts...]を選択すると、スクリプトを選択するダイアログが開きます。

スクリプト実行ダイアログ
スクリプト実行ダイアログ

 左側のリストからスクリプトを選択して[Run Script]ボタンをクリックするとスクリプトが実行されます。このボタンの名前は、PhotoshopScriptingのバージョンによっては日本語になっているかもしれません。このボタンを押すときに、[ALT]キーを押すと、[Run Script]ボタンの名前が[Debug Script]に変わり、デバッグモードでスクリプトを実行することができます。

スクリプト実行ダイアログ([ALT]キー押下時)
スクリプト実行ダイアログ([ALT]キー押下時)
デバッグ・ダイアログ
デバッグ・ダイアログ

 また、左側のリスト以外のスクリプトを実行したい場合は[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.documentwindow.locationなど)の種類が異なることです。

 また、もう1つ違う点は、各オブジェクトに用意されているメソッド(関数)の引数に「専用に使うオブジェクト」が用意されている点です。これは、Enumerationと呼ばれます(Enumerationは日本語で列挙、一覧表という意味です)。

 「Photoshop Scripting 1.0.2\Documentation」に格納されている、JavaScript用のマニュアル「JavaScript Reference.pdf」では、通常のオブジェクトと区別してEnumerationが掲載されています。

「JavaScript Reference.pdf」の目次
「JavaScript Reference.pdf」の目次

 このEnumerationを具体的にどう使うか、実例を元に説明しましょう。

Enumerationの使い方
//==== サイズの変更 ====================================================
//
activeDocument.resizeImage(          // サイズの変更
    newW,                // 横幅
    newH,                // 高さ
    pasteDoc.resolution, // 解像度
    ResampleMethod.BICUBIC );    // 縮小形式

 上記のスクリプトでは、activeDocumentというDocument形式のオブジェクトのresizeImage()メソッドを実行しています。このスクリプトのなかで、ResampleMethodがEnumerationになります。

 これは、ResampleMethod.BICUBICResampleMethod.BILINEARといった、「引数用のパラメータ」だけを持ったオブジェクトになります。

 実際にマニュアル中で、どのようにObjectとEnumerationが記載されているか、キャプチャー画像を掲載しておきます。まずはEnumerationです。

Enumerationの例
Enumerationの例

 Enumerationは、BitmapHalfToneType.CROSSBitmapHalfToneType.DIAMONDなどのようにして、オブジェクトのメソッドの引数として使います。

Objectの例
Objectの例

 通常のオブジェクトには、プロパティとメソッド(関数)があります。このタイプのオブジェクトは、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()の引数として使用する「保存設定」には、さまざまなファイル形式の「保存設定オブジェクト」が入ります。上記の例では、JPEGSaveOptionsGIFSaveOptionsという、異なったオブジェクトを指定しています。

 マニュアルのsaveAs()メソッドの項には、ただ単に「Object」としか書かれていないので戸惑うかもしれません。適宜、対応するオブジェクトを代入することになります。

 このように、引数として複数種類のオブジェクトを代入できるメソッドが多数あります。こういったメソッドの存在を知らなければ、マニュアルを見ても意味が分からないと思いますので紹介しておきます。

次のページ
スクリプト作成1 ~ ファイルの作成と実行方法

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

柳井 政和(ヤナイ マサカズ)

クロノス・クラウン合同会社 代表社員http://crocro.com/オンラインソフトを多数公開。プログラムを書いたり、ゲームを作ったり、記事を執筆したり、マンガを描いたり、小説を書いたりしています。「めもりーくりーなー」でオンラインソフト大賞に入賞。最近は、小説家デビューして小説も書いています(『裏切りのプログラム』他)。面白いことなら何でもOKのさすらいの企画屋です。 

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/406 2006/06/12 00:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング