画像を指定したブロックサイズに自動分割

巨大な画像データを32x32ピクセルのブロックサイズなどに分割したい場合があります。WebでもGoogle Mapsのような巨大マップをブロックごとに分割して利用している例もあります。
このような巨大画像を指定したブロックサイズで分割する場合にはスクリプトがあれば簡単にできます。以下のスクリプトは開かれている画像を指定したブロックサイズにしてPSD形式で保存するものです。

blockWidth = 64; // 64 pixel
blockHeight = 64; // 64 pixel
preferences.rulerUnits = Units.PIXELS;
psdOpt = new PhotoshopSaveOptions();
psdOpt.alphaChannels = true;
psdOpt.annotations = true;
psdOpt.embedColorProfile = false;
psdOpt.layers = true;
psdOpt.spotColors = false;
folderObj = Folder.selectDialog("保存フォルダを選択してください");
if (folderObj)
{
docW = activeDocument.width.value;
docH = activeDocument.height.value;
countY = 0;
for(y=0; y<docH; y+=blockHeight)
{
countX = 0;
for (x=0; x<docW; x+=blockWidth)
{
selReg = [[x,y],[x+blockWidth,y],[x+blockWidth,y+blockHeight],[x,y+blockHeight]];
activeDocument.selection.select(selReg);
activeDocument.selection.copy();
documents.add(blockWidth, blockHeight);
activeDocument.selection.selectAll();
activeDocument.paste(true);
filename = countX+"_"+countY;
fileObj = new File(folderObj+"/"+filename);
activeDocument.saveAs(fileObj, psdOpt, true, Extension.LOWERCASE);
activeDocument.close(SaveOptions.DONOTSAVECHANGES);
countX++;
}
countY++;
}
}

実行する前に、できれば画像の横幅と縦幅は分割するブロックサイズの倍数にしておいてください。
ブロックサイズを変更するには以下の二行の数字を変えてください。blockWidthが横幅、blockHeightが縦幅のピクセル数になります。

blockWidth = 64; // 64 pixel
blockHeight = 64; // 64 pixel

保存されるファイル名は「横のブロック番号_縦のブロック番号.psd」になります。もし、ファイル名を変更したいのであれば以下の行を修正してください。

filename = countX+"_"+countY;

例えば先頭にMapという文字を付加したい場合には以下のようにします。

filename = "Map"+countX+"_"+countY;




[サンプルをダウンロード]