KINOKO WEB

きのこ関係です。ときどき植物。

Photoshop

2014-03-17 | 画像処理


/ 親フォルダ
// ∟作業フォルダ
//   ∟M=B画像
//   ∟M=C画像
//   ∟Main画像
// ***************************************************************************************************************
var docObj = activeDocument;
var folderPath = docObj.path //作業フォルダパスを格納します。
var folderName = folderPath.name //作業フォルダ名を格納します。
var parentPath = folderPath.parent //親フォルダパスを格納します。
var jadgeA = documents.length==1 //開いてる画像が1つの場合だけ実行します。
var jadgeA = jadgeA&&docObj.artLayers.length==4 //レイヤーが4枚のときだけ実行します。
var jadgeA = jadgeA&&docObj.artLayers [0].name=="@M=C@" //一番上のレイヤー名が"@M=C@"ときだけ実行します。

if (jadgeA==true){
// =======================================================
//一番上のレイヤーを非表示、2、3番目のレイヤーを表示します。
// =======================================================
docObj.artLayers [0].visible = false;
docObj.artLayers [1].visible = true;
docObj.artLayers [2].visible = true;

// =======================================================
//レイヤーを統合します。
// =======================================================
var idFltI = charIDToTypeID( "FltI" );
executeAction( idFltI, undefined, DialogModes.NO );

// =======================================================
//親フォルダにフォトショップ画像を保存します。
// =======================================================
var docName = activeDocument.name.split("."); //拡張子を削除したファイル名を格納します。
psdSave (parentPath+"/"+docName[0]+".psd"); //フォトショップ形式で保存します。
activeDocument.close(SaveOptions.DONOTSAVECHANGES); //ファイルを閉じます。

// =======================================================
//作業フォルダ内のすべてのファイルと作業フォルダを削除します。
// =======================================================
if (folderName.length==2){
var fileList = folderPath.getFiles();
for(i=0;i<=fileList.length;i++)
{new File(fileList[i]).remove()} //作業フォルダ内のすべてのファイルを削除します。
new File(folderPath).remove() //作業フォルダを削除します。
}

// ***************************************************************************************************************
//マージするTIFF画像を開きます。
// ***************************************************************************************************************

// =======================================================
//作業フォルダの有無を調べます。
// =======================================================
var fileList = parentPath.getFiles(); //親フォルダ内のファイル一覧を取得します。
var fileLength = fileList.length; //親フォルダ内の全ファイル数を格納します。
n=0;
workTiffPresent = false;
workFolderPresent = false;
workFolderJadge = false;
do {
fName = fileList[n].name;
fLength = fName.length;
if (fLength == 2) { //フォルダ名が2文字の場合に実行します。
workFolder = fileList[n]; //フォルダのパスを格納します。
TiffList = workFolder.getFiles("*.tif"); //TIFF画像をリストします。****ERROR*****
TiffLength = TiffList.length; //TIFF画像を数えます。

if (TiffLength >= 3){ //Tiff画像が3個以上の場合に実行します。
// =======================================================
//M=Bファイルの有無を調べます。
// =======================================================
i=0
jadgeMB = false;
jadge = true;
do {
TiffName = TiffList[i].name; //ファイル名を格納します。
if (TiffName.indexOf("M=B")>=0){
pathMB = TiffList.splice(i,1); //M=Bファイルのパスを格納し、ファイルリストからM=Bファイルを削除します。
jadgeMB = true;
jadge = true;
}else{
if (i >= TiffLength - 1){
jadge = true;
}else{i++;
}
}
}while (jadge == false)

// =======================================================
//M=Cファイルの有無を調べます。
// =======================================================
i=0
jadgeMC = false;
jadge = false;
TiffLength = TiffList.length; //M=BファイルをのぞいたTIFF画像数です。
do {
TiffName = TiffList[i].name; //ファイル名を格納します。
if (TiffName.indexOf("M=C")>=0){
pathMC = TiffList.splice(i,1); //M=Bファイルのパスを格納し、ファイルリストからM=Bファイルを削除します。
jadgeMC = true;
jadge = true;
}else{
if (i >= TiffLength - 1){jadge = true}else{i++};
}
}while (jadge == false);

workFolderPresent = jadgeMB&&jadgeMC; //M=BファイルとM=Cファイルがみつかったら、作業フォルダと認定します。

if (workFolderPresent == true){ //作業フォルダがあるときに実行します。
workFolderJadge = true;
}else{ //作業フォルダがないときに実行します。
if (n>=fileLength - 1){
workFolderJadge = true; //ファイル数分実行したらループをぬけます。
showBrige (); //作業フォルダがない場合はBrigeを表示します。
}else{n++}; //nをインクリメントします
}
}else{ //Tiff画像が3個以上の場合に実行します
if (n>=fileLength - 1){
workFolderJadge = true; //ファイル数分実行したらループをぬけます。
showBrige (); //作業フォルダがない場合はBrigeを表示します。
}else{n++}; //Tiff画像が3個以上なかったら、nをインクリメントし、ループを繰り返します。
}
}else{ //フォルダ名が2文字以外の場合に実行します。
if (n>=fileLength - 1){
workFolderJadge = true; //ファイル数分実行したらループをぬけます。
showBrige (); //作業フォルダがない場合はBrigeを表示します。
}else{n++}; //nが全ファイル数に到達してなかったらnをインクリメントし、ループを繰り返します。
}
} while (workFolderJadge == false)

// =======================================================
//作業フォルダがある場合は、M=B, M=C, Main画像を開きます。
// =======================================================
if (workFolderPresent == true) {
//~ var idOpn = charIDToTypeID( "Opn " );
//~ var desc1 = new ActionDescriptor();
//~ var idnull = charIDToTypeID( "null" );
//~ desc1.putPath( idnull, new File(pathMB) ); //M=B画像を開きます。
//~ executeAction( idOpn, desc1, DialogModes.NO );
//~ desc1.putPath( idnull, new File(pathMC) ); //M=C画像を開きます。
//~ executeAction( idOpn, desc1, DialogModes.NO );
//~ desc1.putPath( idnull, new File(TiffList[0]) ); //Main画像を開きます。
//~ executeAction( idOpn, desc1, DialogModes.NO );
open (new File(pathMB));
open (new File(pathMC));
open (new File(TiffList[0]));
}
}


// ***************************************************************************************************************
//M=BとM=Cの画像を統合します。
// ***************************************************************************************************************

mB = -1
mC = -1

//ドキュメントが3つの場合だけ実行します。
if (documents.length==3){

//ドキュメント数を求めます。
dLength = documents.length;

//メイン、M=B、M=Cファイルを識別します。
for (i=0; i<dLength; i++)
{dName = documents[i].name;

if (dName.indexOf("M=B")>0){MB=i; MBName=dName}
if (dName.indexOf("M=C")>0){MC=i; MCName=dName}}

main = dLength-MB-MC
mainName = documents[main].name;

// =======================================================
//M=Bをメインにコピーします。
activeDocument = documents[MBName]
activeDocument.artLayers[0].copy();
//M=Bを閉じます。
activeDocument.close(SaveOptions.DONOTSAVECHANGES);
//M=Bをメインにコピー貼り付けます。
activeDocument = documents[mainName]
activeDocument.paste();

// =======================================================
//M=Cをメインにコピーします。
activeDocument = documents[MCName]
activeDocument.artLayers[0].copy();
//M=Cを閉じます。
activeDocument.close(SaveOptions.DONOTSAVECHANGES);
//M=Cをメインにコピー貼り付けます。
activeDocument = documents[mainName]
activeDocument.paste();

// =======================================================
activeDocument.artLayers[0].duplicate(); //レイヤーを複製します。
activeDocument.artLayers[0].name = "@M=C@" //複製したレイヤーの名前を"@M=C@"にします。
activeDocument.artLayers[0].visible = false; //複製したレイヤーを非表示にします。
layerMasc (); //2番目のレイヤをマスクします。
}
// =======================================================
//Photoshop形式で保存します。psdPathは、ファイルパスを指定します。
// =======================================================
function psdSave (psdPath){
fileObj = new File(psdPath);
psdOpt = new PhotoshopSaveOptions();
psdOpt.alphaChannels = true;
psdOpt.annotations = true;
psdOpt.embedColorProfile = true;
psdOpt.layers = true;
psdOpt.spotColors = true;
activeDocument.saveAs(fileObj, psdOpt, true, Extension.LOWERCASE);
}
// =======================================================
//ビープ音を鳴らし、Brigeを表示します。
// =======================================================
function showBrige (){
app.beep (); //ビープ音を鳴らします。
var idshowFileBrowserPalette = stringIDToTypeID( "showFileBrowserPalette" );
var desc1 = new ActionDescriptor();
var idMxm = charIDToTypeID( "Mxm " );
desc1.putBoolean( idMxm, false );
var idNwVw = charIDToTypeID( "NwVw" );
desc1.putBoolean( idNwVw, false );
executeAction( idshowFileBrowserPalette, desc1, DialogModes.NO );
}
// =======================================================
//レイヤをマスクします。
// =======================================================
function layerMasc (){
var idMk = charIDToTypeID( "Mk " );
var desc2 = new ActionDescriptor();
var idNw = charIDToTypeID( "Nw " );
var idChnl = charIDToTypeID( "Chnl" );
desc2.putClass( idNw, idChnl );
var idAt = charIDToTypeID( "At " );
var ref1 = new ActionReference();
var idChnl = charIDToTypeID( "Chnl" );
var idChnl = charIDToTypeID( "Chnl" );
var idMsk = charIDToTypeID( "Msk " );
ref1.putEnumerated( idChnl, idChnl, idMsk );
desc2.putReference( idAt, ref1 );
var idUsng = charIDToTypeID( "Usng" );
var idUsrM = charIDToTypeID( "UsrM" );
var idHdAl = charIDToTypeID( "HdAl" );
desc2.putEnumerated( idUsng, idUsrM, idHdAl );
executeAction( idMk, desc2, DialogModes.NO );
}

最新の画像もっと見る

コメントを投稿