フォルダ内の画像を別の画像に自動で合成するPhotoshop用JSXスクリプト

LINEスタンプを宣伝するため、宣伝用画像を作りたいと思いました。

LINEのガイドラインに沿って書出した画像(01.png~40.png、main.png、tab.png)をそのまま使って、
宣伝用画像のベースとなる画像に40枚のスタンプ画像を自動で合成できれば、
ベース画像を作るだけで済みますので楽です。

JSXは、基本的にJavaScriptと書き方は同様ですが、
Photoshopの操作を行う関数とかの公式リファレンスが見当たらなくて、
いろいろなサイトのいろいろな方法を拝見しましたが、
部分的な説明が多く、一連の処理が載っているものが少なかったので、
記事にしてみました。

やりたいことは、
ps_jsx
ということです。

LINEスタンプ画像の保存ディレクトリはダイアログで選択可能とします。
スクリプトにより作成された宣伝用画像は、ベース画像と同階層のフォルダに保存されます。

作成した際のポイントとして、
・今後スタンプの種類が増えることを考えて、ある程度の汎用性を持たせる。
・WEBデバイス用に書出すことで、ファイルサイズを小さくする。
・Twitter投稿に最適なサイズ横506px/縦253pxで書出す。

ちなみに、
LINEスタンプのような透明ピクセルを含む画像をresizeImage()すると、キャンバスサイズではなく不透明範囲を基準にリサイズされてしまいます。
もともとは、ベース画像を横506px/縦253pxとして、スタンプ画像を縦253pxに縦横比を保持したまま縮小後に、ベース画像へペーストする処理をしていましたが、
スタンプ画像により縮小率がまちまちになってしまうため、この記事で紹介している処理手順にしました。

注意点として、
本スクリプトは、ソースが煩雑になるため、エラーのハンドリングはしていません。
配布するスクリプトを作成される場合は、必ずそれらの処理を入れてください。
また、このスクリプトはPhotoshop CS5.5でのみ動作を確認しています。

LINEで送る