Photoshop Scriptingを使おう

ADVゲームなどのキャラクターの立ち絵をPhotoshopで作る場合
目や口などを別のレイヤーで扱う。
実際にゲームで使うデータにするとき、例えば顔でいうと
のっぺらぼうの顔画像、各目のパーツ、各口のパーツなどにわける。
このとき、目のグループや口のグループなどのサイズを同じにしておき
表情を変えるときに同一座標で表示が行えるようにする。
これらを手動で作成するのは、非常に時間がかかるのでツールを作り、一括変換を行う。


上記のことを実装するには以下の手順を行う
1:必要レイヤーを重ねて画像ファイルを出力する
例えば、喜怒哀楽の表情ごとの画像をPNGなどで出力する。

2:出力した画像をピクセル単位で差分をとり、差分の最大サイズで
パーツを切り出す。


2番に関しては、C#などでPNGファイルを読み込み、差分をとって吐き出すだけなので
さほど問題ではないが、問題なのは1番だった。
最初、Photoshopのデータフォーマットを調べたのだが、情報がPhotoshop3.0まで
しかないのだ。仕事で使用しているバージョンが7.0であり、基本フォーマットは変わらないようだが
拡張フォーマットが追加されていて、どのようなデータかわからずに困っていた。


仕方ないので、何かライブラリがないかなと探していたところ、Photoshop Scriptingを発見した。
これは、PhotoshopJavaScriptを実行することができるプラグインで、英語圏Adobeの公式ページから
ダウンロードすることができる。(日本のページにはない)


7.0用のスクリプトプラグインのリファレンスは日本語のものが存在しないので、解説しているところを調べたところ
以下の2箇所が非常に役に立った。


Photoshop Scripting 覚書き
http://www016.upp.so-net.ne.jp/sorakaze/script/index.html
Photoshopは、ドキュメントをコピーして別のドキュメントに貼り付けたときに
勝手にセンタリングされるという仕様があり、これが非常にうっとおしいのだが
ここのサンプルはそれをうまく回避しているので、非常に参考になった。


Photoshop CS自動化作戦
http://www.openspc2.org/book/PhotoshopCS/
バージョンはCSとなっているが、7.0でも十分使用できる。
ここは、日本語リファレンスとして使用できるページ


以上のページを参考にすることで、手順1を無事終了させた。