いつかまともなサイトを作りたい物です・・・
今回もPhotoshopのスクリプトです
Photoshopで画像の差分制作を行います
エロではありません。
いや、むしろエロでつかったら俺にください!!!
・・・というわけで、差分のレイヤー表示を簡単に
するべく作ったスクリプトです
説明
命名法則により、表示、非表示を
一括で切り替えるスクリプトです
■Unhide
名前がマッチした場合、表示する
■Hide Group
名前がマッチした場合、非表示にする
※表示に入っている場合は無視されます
■その他
・その他のレイヤーの表示は変更しません
・レイヤーセットの名前が適合した場合、
それ以下のレイヤーの表示は変更しません
SwitchLayers
//SwitchLayers // 05 28 2013 //Global var LEFT = 20 var TOP = 20 var BUTTON_W = 100 var OFFSET_W = 125 var BUTTON_H = 25 var OFFSET_H = 40 //初期に設定されるグループネーム var textChkGroupName = "p1,p2,p3,p4,p5,p6,p7,p8,p9"; var gUnHideObjectName = "homhom" var gHideObjectNameGroup = ["hamham"] //レイヤーに対するアクションA function layerActionA( in_Layer ){ //alert( "ActionA Match " + in_Layer.name ) in_Layer.visible = true } //レイヤーに対するアクションB function layerActionB( in_Layer ){ //alert( "ActionB GMatch " + in_Layer.name ) in_Layer.visible = false } //名前検索(グループ) function chkNameGroup( trget_Name ) { for ( var i = 0; i < gHideObjectNameGroup.length; i++) { if (trget_Name.match( gHideObjectNameGroup[i] ) ){ return true } } return false } //名前検索 function chkName( trget_Name ){ //alert(gUnHideObjectName) if ( trget_Name.match( gUnHideObjectName ) ){ return true } return false } //再帰関数 function getAllLayer(parent){ //alert(gUnHideObjectName) var ChildLayers= parent.layers; for (var i = 0; i < ChildLayers.length; i++){ if (ChildLayers[i].typename == "LayerSet"){ //レイヤーセットの場合の処理 //alert("LayerSet Name = " + ChildLayers[i].name) if( chkName( ChildLayers[i].name ) ){ layerActionA( ChildLayers[i] ) continue; } else{ //該当する名前がグループのみにあった場合 if ( chkNameGroup( ChildLayers[i].name) ){ layerActionB( ChildLayers[i] ) continue; } } //再帰処理 getAllLayer(ChildLayers[i]); }else{ //通常のレイヤーの場合の処理 // alert("Layer Name = " + ChildLayers[i].name) if( chkName( ChildLayers[i].name ) ){ layerActionA( ChildLayers[i] ) }else{ //該当する名前がグループのみにあった場合 if ( chkNameGroup( ChildLayers[i].name) ){ layerActionB( ChildLayers[i] ) } } } } } function switchLayers(uDlg){ //alert("changeViewVis") //ダイアログからグローバル変数の設定 gUnHideObjectName = uDlg.unhideName.text gHideObjectNameGroup = uDlg.hideGroupName.text.split(",") //alert(gUnHideObjectName) //for ( var i = 0; i < gHideObjectNameGroup.length;i++) // alert(gHideObjectNameGroup[i]) //実作業 var parent = activeDocument;//作業するドキュメントの参照 getAllLayer(parent); refresh(); } function main(){ app.bringToFront(); //ドキュメントが開かれているかどうか判別 if (app.documents.length ==0){ alert("No Docment") return; //ドキュメントが開かれていない場合処理なし } var uDlg = new Window('dialog','switchLayers'); uDlg.bounds = [200,300,580,420]; //uDlg.opacity = .9; uDlg.sText = uDlg.add("statictext", [ 20, 10, 140, 10 + BUTTON_H], "UnHide (Unique)"); uDlg.unhideName = uDlg.add("edittext", [150, 10, 250, 10 + BUTTON_H], "p1"); uDlg.sText = uDlg.add("statictext", [ 20, 40, 140, 40 + BUTTON_H], "HideGroup(split(','))"); uDlg.hideGroupName = uDlg.add("edittext",[150, 40, 360, 40 + BUTTON_H], textChkGroupName); uDlg.btnCancel = uDlg.add("button", [150, 70, 250, 70 + BUTTON_H], "Close"); uDlg.btn00 = uDlg.add("button", [270, 70, 360, 70 + BUTTON_H], "Apply"); uDlg.btnCancel.onClick = function () { //alert("キャンセルされました。"); uDlg.close(); } //ボタンを押されたときの設定 uDlg.btn00.onClick = function () { //switchLayers(uDlg); activeDocument.suspendHistory('switchLayers', 'switchLayers(uDlg)'); //margin(gap); } uDlg.show() //alert("finish") } main()
展望
現在、表示レイヤーをtga保存する
ところまでいけました
次は一括出力です。
この手の作業はなるべく自動化しておきたい物ですヨ
0 件のコメント:
コメントを投稿