今回は大量に画像を切り抜くスクリプトです。画像を特定の形に切り抜きたい場合があります。画像の枚数が数十枚なら手作業で良いでしょうし、その方が早いでしょう。しかし100枚以上になると、さすがに手作業では疲れますしミスも発生しやすくなります。そんな時は以下のようなスクリプトを使えば任意の形状に切り抜く事ができます。
			まず、切り抜く前に準備が必要です。切り抜くためにマスクをアルファチャンネルに作成しておきます。つまり切り抜く形状をアルファチャンネルに設定しておくわけです。ちなみに、ここではRGB画像を想定しているので、それ以外の画像モードでは動作しません(スクリプトの変更が必要です)。
			次にエディタで切り抜かれる画像のファいる名一覧を作成します。例えば以下のように画像ファイル名だけを並べます。
001.jpg
			002.jpg
			ABC.jpg
			DEF.gif
			zzz.jpg
これらの画像ファイルがあるフォルダは
imageFolder = "/dgcr/image/"; // 切り抜かれる画像があるフォルダ
で指定します。この場合は、dgcrフォルダ内のimageフォルダ内に001.jpg、002.jpgがあるということです。
			これで準備が終了しましたので、あとは実行するだけです。ファイルが存在しない場合の処理は行っていないのでファイルがないとスキップされてしまい処理されません。
TABCODE = String.fromCharCode(9);  // タブコード
			motoFile = new File("/dgcr/moto.psd");  // 元ファイルがある画像のパス
			dataFile = new File("/dgcr/data.txt");  // 画像ファイル名一覧のファイル名
			saveFolder = "/dgcr/result/"; // 切り抜かれた画像の保存先フォルダ
			imageFolder = "/dgcr/image/"; // 切り抜かれる画像があるフォルダ
if (dataFile.open("r") == true)
			{
			     while(!dataFile.eof)
			     {
			          tmp = dataFile.readln();
			          Text = tmp.split(TABCODE);
			          // ダブルクオーテーションの処理
			          for (i=0; i<Text.length; i++)
			          {
			               if (Text[i].charAt(0) == '"')
			               {
			                    Text[i] = Text[i].substring(1,Text[i].length-1);
			               }
			          }
			          fileObj = new File(imageFolder+Text[0]);
			          if (fileObj.open("r") == true)
			          {
			               // 画像の配置
			               open(fileObj);
			               activeDocument.selection.selectAll();   // 全てを選択
			               activeDocument.activeLayer.copy(); // コピー
			               activeDocument.close(SaveOptions.DONOTSAVECHANGES);
			               open(motoFile);
			               chObj = activeDocument.channels[3];     // アルファチャンネル1を読み込み
			               activeDocument.selection.load(chObj);   // アルファチャンネルを選択
			               activeDocument.paste(true);   // 選択範囲内にペースト
			               savePSD(saveFolder+Text[0].split(".")[0]+".psd"); // ファイル保存
			               activeDocument.close(SaveOptions.DONOTSAVECHANGES);
			          }
			     }
			}
			// PSD形式で保存
			function savePSD(psdFileObj)
			{
			     var saveFileObj = new File(psdFileObj);
			     var psdOpt = new PhotoshopSaveOptions();
			     psdOpt.alphaChannels = true;  // チャンネルを保存する
			     psdOpt.annotations = true;    
			     psdOpt.embedColorProfile = false;  // カラープロファイルは埋め込まない
			     psdOpt.layers = true;    // レイヤー情報は保存する
			     psdOpt.spotColors = false;
			     activeDocument.saveAs(saveFileObj, psdOpt, true, Extension.LOWERCASE);
			}
Photoshop形式で保存さえできれば、あとはどうにでもなります。Photoshop形式でなく直接透過GIF形式で保存することもできます。この場合は以下のスクリプトになります。
TABCODE = String.fromCharCode(9);  // タブコード
			motoFile = new File("/dgcr/moto.psd");
			dataFile = new File("/dgcr/data.txt");
			saveFolder = "/dgcr/result/";
			imageFolder = "/dgcr/image/";
if (dataFile.open("r") == true)
			{
			     while(!dataFile.eof)
			     {
			          tmp = dataFile.readln();
			          Text = tmp.split(TABCODE);
			          // ダブルクオーテーションの処理
			          for (i=0; i<Text.length; i++)
			          {
			               if (Text[i].charAt(0) == '"')
			               {
			                    Text[i] = Text[i].substring(1,Text[i].length-1);
			               }
			          }
			          fileObj = new File(imageFolder+Text[0]);
			          if (fileObj.open("r") == true)
			          {
			               // 画像の配置
			               open(fileObj);
			               activeDocument.selection.selectAll();   // 全てを選択
			               activeDocument.activeLayer.copy(); // コピー
			               activeDocument.close(SaveOptions.DONOTSAVECHANGES);
			               open(motoFile);
			               chObj = activeDocument.channels[3];     // アルファチャンネル1を読み込み
			               activeDocument.selection.load(chObj);   // アルファチャンネルを選択
			               activeDocument.paste(true);   // 選択範囲内にペースト
			               saveGIF(saveFolder+Text[0].split(".")[0]+".gif"); // ファイル保存
			               activeDocument.close(SaveOptions.DONOTSAVECHANGES);
			          }
			     }
			}
			// GIF形式で保存
			function saveGIF(sFileObj)
			{
			     var saveFileObj = new File(sFileObj);
			     var gifOpt = new GIFSaveOptions(); // GIFオプション指定を行うオブジェクトを作成します
			     gifOpt.colors = 16; // 色数を16にします
			     gifOpt.dither = Dither.NONE;  // ディザなしにします
			     gifOpt.interlacted = true;    // インターレースONにします
			     gifOpt.matte = MatteType.WHITE;    // マットカラーを白にします
			     gifOpt.palette = Palette.EXACT;    // カラーパレットの種類を指定します
			     gifOpt.preserveExactColors = false;     // 同一色の保持(しない)
			     gifOpt.transparency = true;   // 背景透過(する)
			     activeDocument.saveAs(saveFileObj, gifOpt, true, Extension.LOWERCASE);
			}
GIF形式の場合、いろいろなオプションが指定できます。PDFマニュアルを開くのも面倒でしょうし英語なので指定できるオプションを以下に載せておきます。
colors    色数(最大256。保存パレットの種類にもよる)
			dither    ディザ処理
			          Dither.DIFFUSION    誤差拡散
			          Dither.NOISE   ノイズ
			          Dither.NONE    なし
			          Dither.PATTERN パターン
			ditherAmount   ディザ処理の割合
			forced    強制
			          ForcedColors.BLACKWHITE  白黒
			          ForcedColors.NONE   なし
			          ForcedColors.PRIMARIES   RGB色度座標
			          ForcedColors.WEB    Web
			interlaced     インターレース(true:オン、false:オフ)
			matte     マット
			          MatteType.BACKGROUND     背景色
			          MatteType.BLACK     黒
			          MatteType.FOREGROUND     描画色(前景色)
			          MatteType.NETSCAPENONE   Netscapeグレー
			          MatteType.SEMIGRAY  50%グレー
			          MatteType.WHITE     白
			palette   パレットの種類
			          Palette.EXACT  全ての色を割り付ける
			          Palette.LOCALADAPTIVE    ローカル(割り付け)
			          Palette.LOCALPERCEPTUAL  ローカル(知覚的)
			          Palette.LOCALSELECTIVE   ローカル(特定)
			          Palette.MACOSPALETTE     システム(Macintosh)
			          Palette.MASTERADAPTIVE   マスター(割り付け)
			          Palette.MASTERPERCEPTUAL マスター(知覚的)
			          Palette.MASTERSELECTIVE  マスター(特定)
			          Palette.PREVIOUSPALETTE  前回使用したパレット
			          Palette.UNIFORM     RGBカラーを均等に割り付ける
			          Palette.WEBPALETTE  Web
			          Palette.WINDOWSPALETTE   システム(Windows)
			preserveExactColors 同一色の保持(true:する、false:しない)
			transparency   透明(true:透明にする、false:透明にしない)
注意しないといけないのはWeb用に保存で保存するGIFとは異なる点です。これはファイルメニューから別名で保存を選択してGIF形式で保存するのと同じなので環境設定によってはサムネールごと保存されてしまいます。つまり画像サイズが肥大化してしまうおそれがあります。これを回避するには環境設定でサムネールを保存しないように設定しておきます。これで、まあ普通の状態のGIF画像になります。