イラストレーターのスクリプトを初めて作ったよ!


イラストレーターでフレームを作って、指定のフォルダ(素材フォルダ)に有る素材を嵌めてpngで出力したいぞ、と。

さてどうすっか。

  1. 素材フォルダの中のpngファイルを新しいレイヤーにどんどん配置していって、非表示にする。
  2. 非表示のレイヤーから一つづつ表示にしてpngで出力する。

という2ステップにしました。
スクリプトコードがネットに有るおかげで私も助かりました(ほぼ流用)のであげておきます。
実行したのはIllustrator CS6(64bit)です。

新規レイヤーにオブジェクト配置するスクリプト

最初に配置したい大きさの四角とか作ってそれを選択して実行
スクリプト
dtpstepup.blog47.fc2.com

//現在選択しているオブジェクト
docObj = activeDocument;
sel = activeDocument.selection;
//選択してるのが一つ
if(sel.length == 1){
//配置位置
Xo = sel[0].left;
Yo = sel[0].top;
//配置サイズ
Sw = sel[0].width;
Sh = sel[0].height;
//レイヤー追加
doc = activeDocument;
//素材フォルダを選択      
Pfolder = Folder.selectDialog("画像フォルダを選択して下さい","" );
if (Pfolder != null){
//素材フォルダのpngファイルのリスト
Plist = Pfolder.getFiles("*.png");
A = Plist.length;         //画像の数
//素材png数分ループ
for(i=0;i<A;i++){
//素材ファイル
Pfile = new File(Plist[i]);
//レイヤー追加
lay = doc.layers.add();
//レイヤー名素材X
lay.name="素材"+i
//配置位置に素材ファイル配置
Phaiti = docObj.placedItems.add();
Phaiti.file = Pfile;
Phaiti.position = [Xo,Yo];
Porgw = Phaiti.width;     //画像の元の幅
Porgh = Phaiti.height;      //画像の元の高さ
幅と高さ小さいの比率で画像のサイズ変更
if(Sw/Porgw < Sh/Porgh){    //幅基準
Phaiti.width = Sw;
Phaiti.height = Sw/Porgw*Porgh;
}else{                //高さ基準
Phaiti.height = Sh;
Phaiti.width = Sh/Porgh*Porgw;
}
//非表示
lay.visible = false;
}
}
//元画像削除
sel[0].remove();
}

レイヤーごとにpngファイル出力

素材X(Xは数字)のレイヤーを一つずつ表示にしてpngで出力
スクリプト
namayakegadget.com

layObj = activeDocument.layers;
layNum=layObj.length;
for (i=0; i<layNum; i++)
{
if (layObj[i].name.indexOf("素材") === 0)
{
//レイヤー表示
layObj[i].visible = true;
// pngの書き出しを設定する(デフォルト設定)[設定できる範囲や仕方など]
var pngOpt = new ImageCaptureOptions();
// 解像度(150)[72.0-2400.0]
pngOpt.resolution = 200;
// アンチエイリアス(false)
pngOpt.antiAliasing = false;
// 透過設定(false)
pngOpt.transparency = false;
pngOpt.matte = false;
// 保存する場所と名前を設定する
var fRef =app.activeDocument;
// 現在のレイヤー名+ファイルの名前で拡張子をpngに変える
var myname =  layObj[i].name + fRef.name;
var newname = myname.replace(/\.ai/g,".png");
// 現在のファイルの場所を取得し、フルパスを作成する
var mypath = fRef.path;
var newpath = mypath+"/"+newname;
// 保存する範囲を指定するためにアートボードの大きさを取得
var rect = fRef.artboards[0].artboardRect;
// 書き出しを実行
saveFile = new File(newpath);
activeDocument.imageCapture(saveFile, rect, pngOpt);
//レイヤー非表示
layObj[i].visible = false;
}
}

なんかプリセットのところにファイル置いても表示されないので、アクセスしやすいところにおいて都度読み込みました。
デバッグ用にVS Codeのエクステンション入れたりしたけどよくわからなかった(爆)

どのくらい面白かった?

星を押して送信してね

平均 0 / 5. Vote count: 0

是非フォローしてください

最新の情報をお伝えします

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です