пытается написать что-то, что извлекает маски из RGB-каналов.photoshop содержание канала javascript
Я получаю много файлов .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, если это слой с одним цветом, он останавливается. как я могу его продолжать работать, если слой не содержит всех трехканальных цветов? или переписать один канал за раз?
любых идей высоко ценятся, спасибо/S
решил это сам: – SEJM