illustrator jsx でレイヤー表示3x5x6=90パターンpng24で書き出し

カラーの展開を納品確認するために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;
}

コメントを残す

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