有時候處理一些重複的工作,可是工作又不能使用 BATCH 等設定的話,使用SCRIPTING 是最好的方法~ PHOTOSHOP CS2 的SCRIPT 是基於幾個常用易學的語法:
VB SCRIPT
JAVA SCRIPT
變數宣告跟函式的使用都很直覺,不用像JAVA IMPORT一堆有的沒的,沒IMPORT到就不能用,使用的感覺架構跟 JS 非常像,主要控制圖層方面,至於SLICE 等的東西就沒支援了。
我的目標是要寫一個可以把PHOTOSHOP圖層裏面的 GROUP (資料夾) 一個一個輸出的JSX ( ADOBE 命名的副檔名 ) 它的概念就是,把資料夾一個一個做個別的顯示,然後順序輸出成 JPEG ,因為我的有兩層資料夾,就使用了 3 個 FOR,感覺有比用手快,因為用手又要一直按那隻 "眼" 去顯示你要輸出的,一邊出輸又要記著現在是第幾號,重點是還要打字 = =...
使用SCRIPT 可以快速完成 (當然寫也要花時間啊 ) 不過重點是,如果有一些很花時間的輸出,是不確定的,就是說可能還會改~手動就很慘了,有了SCRIPT,稍為改一下又可以重用了。
以下是我寫的 SCRIPT:
var rootLen = app.activeDocument.layerSets.length; // 最上層有幾個 GROUP
var expOpt = new ExportOptionsSaveForWeb(); // 輸出設定
var fname = "";
expOpt.format = SaveDocumentType.PNG; // 輸出 設定(可省)
for( var i = 0 ; i < rootLen ; i++){
len1 = app.activeDocument.layerSets[i].layerSets.length; // 裏面有幾個GROUP
name1 = app.activeDocument.layerSets[i].name;
var ans = confirm("Now Processing:" + name1); // 提示
if(ans){
for( var j = 0; j < len1 ; j++){
len2 = app.activeDocument.layerSets[i].layerSets[j].layerSets.length;
name2 = app.activeDocument.layerSets[i].layerSets[j].name;
// app.activeDocument.layerSets[i].layerSets[j].visible = true;
for( var k = 0 ; k < len2 ; k++){
app.activeDocument.layerSets[i].layerSets[j].layerSets[k].visible = true; // 顯示它
name3 = app.activeDocument.layerSets[i].layerSets[j].layerSets[k].name;
// msg = "Export: "+ name1+"\"+name2+"\"+name3+"\";
// alert(msg);
fname = "C:/XEAZ/WORKS/1.RECENT_WORK/Edoc/META/CHG/" + name1 + "/" + j + "_" + name3 + ".jpg";
// alert(fname);
app.activeDocument.exportDocument(new File( fname), ExportType.SAVEFORWEB ); // 輸出
app.activeDocument.layerSets[i].layerSets[j].layerSets[k].visible = false; // 還原
}
}
}
alert("OK!!");
}


