0
試圖寫一些從RGB通道中提取遮罩的東西。photoshop javascript channel content
我得到很多.exr文件,其中掩碼輸出爲純R G和B圖層。
我已經做到了這一點:
var doc = app.activeDocument;
function showMasks(docGroups) {
//step through the groups
for (var i=0; i<docGroups.length; i++) {
try{
//step through the layers in each group
for(layerIndex=0; layerIndex < docGroups[i].artLayers.length; layerIndex++) {
var RGB = [doc.channels.getByName('Red'),doc.channels.getByName('Green'),doc.channels.getByName('Blue')];
for(var a in RGB)
{
//create slection from channel
doc.selection.load(RGB[a], SelectionType.REPLACE);
//add new layer
doc.artLayers.add();
// REVEAL ALL from selection
var idMk = charIDToTypeID("Mk ");
var desc62 = new ActionDescriptor();
var idNw = charIDToTypeID("Nw ");
var idChnl = charIDToTypeID("Chnl");
desc62.putClass(idNw, idChnl);
var idAt = charIDToTypeID("At ");
var ref20 = new ActionReference();
var idChnl = charIDToTypeID("Chnl");
var idChnl = charIDToTypeID("Chnl");
var idMsk = charIDToTypeID("Msk ");
ref20.putEnumerated(idChnl, idChnl, idMsk);
desc62.putReference(idAt, ref20);
var idUsng = charIDToTypeID("Usng");
var idUsrM = charIDToTypeID("UsrM");
var idRvlS = charIDToTypeID("RvlS");
desc62.putEnumerated(idUsng, idUsrM, idRvlS);
executeAction(idMk, desc62, DialogModes.NO);
}
//hide layer, move on to the next
docGroups[i].artLayers[layerIndex].visible = false;
}
}
catch(e){continue;}
}
}
showMasks(doc.layerSets);
其工作好了,通過團體和層和輸出,因此對他們的層口罩新圖層的步驟。然而,它只適用於一個圖層包含R G和B的圖層,如果它是隻有一種顏色的圖層,它會停止。 如果圖層不包含全部3種通道顏色,我該如何處理它才能繼續運行? 或重寫一次做一個頻道?
任何想法大加讚賞,感謝/ S
自己解決了這個問題: – SEJM