Photoshop Script作成メモ
前の記事では高速化についてだったので、他のTipsメモ
選択範囲の透明部分を完全に削除して切り抜きたい
Photoshop Scriptでレイヤーでは
document.activeLayer.bounds
でレイヤーの領域を取得でき、
document.activeLayer.selection.copy(true);
で選択範囲を結合してコピーできます(引数をfalseにすると結合せずにコピーになります)。
しかし、実際にこの操作を行ってから新規ドキュメントを作成し、データをペーストすると上下に数ピクセルの余白ができることがありました。
これらを削除するために、
if((nx2 - nx1) != (x2 - x1) || (ny2 - ny1) != (y2 - y1)){
newDocument.crop(newBoundsObj);
}//x1-x2、y1-y2はコピーした領域、nx1-nx2、ny1-ny2は新規ドキュメントの領域
という形で、サイズが異なる場合は、新しいドキュメントの内容の領域で切り抜きを実行することで余白を削除できます。
リミットを設ける
Scriptを実行したさい、レイヤー数が多いとどうしても処理が重くなります。そのため、ある程度でリミットを設け、警告を出すようにしたほうがよいです。
特に、
- レイヤーが500を越える
- レイヤーセットの入れ子が多い
このようなデータで処理を実行すると、pCのスペックによっては処理中にフリーズする可能性が高くなるようです。
Adobe ExtendScript Toolkit 2を使う
スクリプトの作成、デバッグにはAdobe CSのフォルダの[Adobe ExtendScript Toolkit 2]を使うと便利です。独立して実行できるので途中で処理を止めたりもできます。
最初、知らなくてテキストエディタで作成してました。
参考サイト
Adobe Photoshop CS2自動化作戦
http://www.openspc2.org/book/PhotoshopCS2/
Photoshopのスクリプト制御
http://codezine.jp/article/detail/406
Adobe Photoshop Scripts | Trevor Morris Photographics
http://morris-photographics.com/photoshop/scripts/index.html
そらかぜ工場 Photoshop Scripting 覚書き
http://www016.upp.so-net.ne.jp/sorakaze/script/
Adobe CS4 バージョンJavaScript ファレンス
http://www.openspc2.org/reibun/AdobeJS/index.html
PhotoShop JavaScript(ExtendScript):Note - ホコホコ hoko-hoko
http://hokori.net/2008/04/20/photoshop_javascript/
Photoshopだけでなく、Flash(JSFL)、Illustrator、AfterEffects(Expression)など、JSでアプリケーションを操作できるAdobe製品は多いので、応用でいろいろと便利なものができると思います。