連番の番号付きのボタンをpng形式で大量に生産する方法

番号付きのボタンを大量にPNGで作らなければいけない。 簡単な方法知ってる? と聞かれたので、多分Photoshopバッチ処理的な何かでできるんじゃなかろうかと思い。

できるよ。と言ってやったものの、普段あまり使わないので方法を忘れないうちに記録しておきます。 いや、そこそこ、ニーズありそうだと思うのですが、僕の場合の使用頻度は少ないので、次使う時に 忘れてしまいそう。

方法は簡単で、Photoshopのファイル>スクリプト>参照>○○.jsを実行することで、番号が連番でついているボタンを生成しPNGで決められたフォルダに保存する。

ということをやらせたい。

で、次のJavaScriptを作った。

setUnit(Units.PIXELS);   // 単位設定

saveFolder = "~/png/";
motoFile = new File("~/base.psd");

textFont = "HiraKakuPro-W6";    // 書体
textSize = 24;  // 文字サイズ(point)
textDX = 40;    // 表示X位置(offset形式)
textDY = 100;   // 表示Y位置(offset形式)
textColor = new SolidColor(); 
textColor.rgb.red = 255;
textColor.rgb.green = 255;
textColor.rgb.blue = 255;

for(i=1; i<=50; i++)
{
    num = "0"+i;
    num = num.substring(num.length-2,3);
    saveName = num;
    open(motoFile);
    layObj = activeDocument.artLayers;
    layRef = layObj.add();
    layRef.kind = LayerKind.TEXT;
    layRef.textItem.contents = saveName;
    layRef.textItem.font = textFont;
    layRef.textItem.size = textSize;
    layRef.textItem.color = textColor;
    layRef.translate(textDX,textDY);
    savePng(saveFolder+"thumb_h_"+saveName+".png");
    activeDocument.close(SaveOptions.DONOTSAVECHANGES);
}

function savePng(pngFileObj)
{
    saveFileObj = new File(pngFileObj);
    var pngOpt = new PNGSaveOptions();
    pngOpt.compression = 9;
    pngOpt.interlaced = true;
    activeDocument.saveAs(saveFileObj, pngOpt, true, Extension.LOWERCASE);
}

function setUnit(unt) { preferences.rulerUnits = unt; }
function getUnit() { return preferences.rulerUnits; }

先にいうと、base.psdにベースとなる背景を作成し、その上に数字の連番をテキストで追加し、png形式で、あらかじめ準備しておいたpngフォルダに保存させている。

今回の要望は50ボタン作成してとのことだったので、ループは1から50まで回している。