イラストレーターでフレームを作って、指定のフォルダ(素材フォルダ)に有る素材を嵌めて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のエクステンション入れたりしたけどよくわからなかった(爆)