カラーの展開を納品確認するために90パターンをjsxで再現してpng24で書き出すスクリプトを書いた。
メインのオブジェクトの色3色(ホワイト、ブラック、グリーン)
文字5色(ホワイト、ブラック、グレー、グリーン、パープル)
背景6色(透明、ホワイト、ブラック、グレー、グリーン、パープル)
がほしいみたいなすごいこと言われて、マジかと思って。作りました。
//var folder = Folder.selectDialog();
//alert( "filepath= "+filepath);
//var folder =filepath;
var document = app.activeDocument;
//if(document && folder)
if(document)
{
var options = new ExportOptionsPNG24();
options.antiAliasing = true;
options.transparency = true;
options.artBoardClipping = true;
options.verticalScale = 1413.4276;
options.horizontalScale = 1413.4276;
//alert( "document.layers= "+document.layers);
//配列グループの中にレイヤー番号を集める
var kupuTopArr=[];
for(var i=0; i<document.layers.length; ++i)
{
layerName=document.layers[i].name;
if(layerName.indexOf( 'kupu_' )>-1)
kupuTopArr.push(i);
}
//alert( "kupuTopArr= "+kupuTopArr);
var kupuUnderArr=[];
for(var i=0; i<document.layers.length; ++i)
{
layerName=document.layers[i].name;
if(layerName.indexOf( 'kupuunder_' )>-1)
kupuUnderArr.push(i);
}
//alert( "kupuUnderArr= "+kupuUnderArr);
var fontArr=[];
for(var i=0; i<document.layers.length; ++i)
{
layerName=document.layers[i].name;
if(layerName.indexOf( 'font_' )>-1)
fontArr.push(i);
}
//alert( "fontArr= "+fontArr);
var bgArr=[];
for(var i=0; i<document.layers.length; ++i)
{
layerName=document.layers[i].name;
if(layerName.indexOf( 'bg_' )>-1)
bgArr.push(i);
}
//alert( "bgArr= "+bgArr);
//全パターンを出力
//alert( "kupuTopArr.length= "+kupuTopArr.length);
for(var kupuTop_i=0; kupuTop_i<kupuTopArr.length; ++kupuTop_i)
{
//alert( "kupuTop_i= "+kupuTop_i);
//他のkupu_レイヤーを非表示
hideArrAllLayers(kupuTopArr)
//今回のkupu_レイヤーを表示
var kupuTop_Laynum=kupuTopArr[kupuTop_i];
//alert( "kupuTop_Laynum= "+kupuTop_Laynum);
document.layers[kupuTop_Laynum].visible = true;
//他のkupuunderレイヤーを非表示
hideArrAllLayers(kupuUnderArr)
//今回のkupuunderレイヤーを表示
var kupuUnder_Laynum=kupuUnderArr[kupuTop_i];
//alert( "kupuUnder_Laynum= "+kupuUnder_Laynum);
document.layers[kupuUnder_Laynum].visible = true;
var kupuTop_Layer_Name=document.layers[kupuTop_Laynum].name+"";
//alert( "kupuTop_Layer_Name= "+kupuTop_Layer_Name);
for(var font_i=0; font_i<fontArr.length; ++font_i)
{
//他のfontレイヤーを非表示
hideArrAllLayers(fontArr)
//今回のfontイヤーを表示
var font_Laynum=fontArr[font_i];
//alert( "kupuUnder_Laynum= "+kupuUnder_Laynum);
document.layers[font_Laynum].visible = true;
var font_Layer_Name=document.layers[font_Laynum].name+"";
for(var bg_i=0; bg_i<bgArr.length; ++bg_i)
{
//他のbgレイヤーを非表示
hideArrAllLayers(bgArr)
//今回のbgイヤーを表示
var bg_Laynum=bgArr[bg_i];
//alert( "kupuUnder_Laynum= "+kupuUnder_Laynum);
document.layers[bg_Laynum].visible = true;
var bg_Layer_Name=document.layers[bg_Laynum].name+"";
//Export -------------------------------------------------------------
filepath=app.activeDocument.path.fsName.toString()+"";
filepathArr = filepath.split('\\'); // ["apple", "banana", "orange"]
filepath=filepathArr.join('/');
var makedDirPath = mkdirp(filepath + '/nouhin/'+kupuTop_Layer_Name+'/'+font_Layer_Name+"");
//alert("makedDirPath= "+makedDirPath);
var ExportfilePath = makedDirPath+kupuTop_Layer_Name+"_"+font_Layer_Name+"_"+bg_Layer_Name+".png"
//alert( "ExportfilePath= "+ExportfilePath);
var file = new File(ExportfilePath);
document.exportFile(file,ExportType.PNG24,options);
}
}
}
/*
var n = document.layers.length;
for(var i=0; i<n; ++i)
{
hideAllLayers();
var layer = document.layers[i];
alert( "document.layers["+i+"].name= "+document.layers[i].name);
layer.visible = true;
//var file = new File(folder.fsName+"/"+layer.name+".png");
var file = new File(filepath+"/"+layer.name+".png");
document.exportFile(file,ExportType.PNG24,options);
}
*/
showAllLayers();
alert( " 処理が完了しました ");
}
function kupu_white_view(){
forEach(document.layers, function(layer) {
if(layer.name=="kupu_white"){
layer.visible = true;
}
layer.visible = false;
});
}
function hideArrAllLayers(Arr)
{
for(var i=0; i<Arr.length; ++i)
{
var Laynum=Arr[i];
//alert( "kupuTop_Laynum= "+kupuTop_Laynum);
document.layers[Laynum].visible = false;
}
}
function hideAllLayers()
{
forEach(document.layers, function(layer) {
layer.visible = false;
});
}
function showAllLayers()
{
forEach(document.layers, function(layer) {
layer.visible = true;
});
}
function forEach(collection, fn)
{
var n = collection.length;
for(var i=0; i<n; ++i)
{
fn(collection[i]);
}
}
function mkdirp(path) {
var fullPath = "";
path = path.toString();
var arr = path.split("/");
for (var i = 0; i < arr.length; i++) {
var folderName = arr[i];
fullPath += folderName + "/";
var folder = new Folder(fullPath);
if (!folder.exists) folder.create();
}
return fullPath;
}
コメント