Photoshop UXP 24.4以降にアップデートされた機能
Photoshop UXPですがアップデートで地味にPhotoshopのAPIが追加されています。今回主に2023年4月から7月までに追加されたAPIについて解説します。主な機能は以下になります。
- Selection(選択範囲)
- Calculations and Apply Image
- componentChannels(チャンネル)
- Imaging APIの正式実装
Imaging APIの正式実装
Photoshop UXP24.4からImaging APIがベータから正式に実装されました。はやrequire(“photoshop”).imaging_beta;ではなくrequire(“photoshop”).imagingで 呼び出します。詳しくは公式ドキュメント参照。
componentChannels(チャンネル)
まずチャンネル関係のプロパティですが実は英語以外の言語環境だとエラーでアクセスできないという重大なエラーがありました。そのバグの修正とと共に元々アルファチャンネル以外のチャンネルはcompositeChannelsというプロパティ名で格納されていたのがcomponentChannelsというプロパティ名になりました。compositeChannelsプロパティは非推奨です。詳しくは公式ドキュメントのDocument class参照。
Calculations and Apply Image
あまり聞きなれないメソッドですが二つのイメージをブレンドして新しいイメージを作る機能です。聞きなれない機能ですがこれはPhotoshopの標準機能にあるのだろうか?ともかくターゲットのドキュメント内のターゲットレイヤーを指定してブレンドします。まずはApply Imageのサンプルコードから。
ブレンドする対象の画像レイヤーをsourceオプションとして該当のチャンネル含めて指定します。その後もう一つの対象画像を指定してapplyImageメソッドで実行します。
次に実際に画像に適応してみます。
上記のサンプル画像を適応させた結果が以下です。
見事にスクリーン効果でブレンドされた画像が生成されました。
次にCalculationsメソッドを実行します、最初にコードから。
Apply Imageの場合片方のレイヤー画像にブレンドを適応させる形Calculationsメソッドの場合二つの画像をブレンドさせて新しく画像を生成させるような形になります。先ほどの画像をCalculationsメソッドでブレンドしてみます。
見事できました。
白黒画像しかブレンドできない?
現状単一チャンネルの指定が必須なのでブレンドの結果は必然的に白黒になります。Componentチャンネル自体の指定は現状できませんでした。そのうちできるようになるのでしょうか。
Selection
最後に選択範囲です。今までありそうでなかったのでBatchPlayでアクセスするしかなかったのですがAPIでも簡単に操作できるようになりました。
注意 2023年7月現在このAPIはベータ版のみの実装です。おそらく25.0で正式に実装されるでしょう。
詳細は公式ドキュメントにありますが細かい対応のできるメソッドが用意されているので一からコードを実装しなくても短いコードで図形を作成したりチャンネルに書き出したりできます。まずは四角形の選択範囲を作ってみます。
正方形の選択範囲ができました。その他Ellipse,Polygon,Column,Rowと簡単な幾何形態は簡単に作れるようになっています。オプションのconstants.SelectionType.REPLACEですがSelectionTypeと言われるタイプのclassで既に選択範囲がドキュメント上に存在している場合どのように選択範囲を加えるかを定義します。REPLACEの場合は既に選択範囲がドキュメントに存在している場合消去して新しい選択範囲で置き換えます。EXTENDは既存の選択範囲に加える形で新しく作成。DIMINISHは既に存在する選択範囲に対して指定の範囲で削除、INTERSECTは既に存在している箇所に重さなった部分のみに作成です。
楕円形の選択範囲を以下の長方形の選択範囲に各種オプションで実行してどのように適応させるか実行してみます。
パスファインダーのオプションに似ています。
その他
選択範囲をチャンネルに保存するメソッドです。saveメソッドは新しいアルファチャンネルに保存。saveToは既に存在しているアルファチャンネルに加える形で保存。
以上大まかなSelectionの説明になりましたがその他選択範囲からパスを作成するmakeWorkPathメソッド、選択範囲の大きさを取得できるboundsプロパティ等豊富に用意されています。