2017-04-11 59 views
1

复制和粘贴矢量蒙我目前能够通过选择有源层:如何选择,通过JavaScript在Photoshop

app.activeDocument.activeLayer.copy(); 

,并将其粘贴

app.activeDocument.paste(); 

但是相关的矢量图与像素口罩不会被复制过来。有没有一种方法来复制与有源层以及相关的矢量和像素面具?

谢谢!

编辑: 我最终使用

app.activeDocument.activeLayer.duplicate(destinationDocument,ElementPlacement.PLACEATBEGINNING);

完全按照我需要的那样工作!

回答

0

当谈到图层蒙版时,脚本侦听器是您的朋友。因为他们是一个有点疼痛。 给出图层名称时,这里的选择图层蒙版的功能(假设它存在)

你应该能够复制并应用到新的图层

// FUNCTION SELECT MASK 
function selectMask(LayerName) 
{ 
    try 
    { 
    var desc = new ActionDescriptor(); 
    var ref = new ActionReference(); 
    ref.putEnumerated(charIDToTypeID('Chnl'), charIDToTypeID('Chnl'), charIDToTypeID('Msk ')); 
    ref.putName(charIDToTypeID('Lyr '), LayerName); 
    desc.putReference(charIDToTypeID('null'), ref); 
    desc.putBoolean(charIDToTypeID('MkVs'), true); 
    executeAction(charIDToTypeID('slct'), desc, DialogModes.NO); 

    // ======================================================= 
    var id1083 = charIDToTypeID("setd"); 
    var desc238 = new ActionDescriptor(); 
    var id1084 = charIDToTypeID("null"); 
    var ref161 = new ActionReference(); 
    var id1085 = charIDToTypeID("Chnl"); 
    var id1086 = charIDToTypeID("fsel"); 
    ref161.putProperty(id1085, id1086); 
    desc238.putReference(id1084, ref161); 
    var id1087 = charIDToTypeID("T "); 
    var ref162 = new ActionReference(); 
    var id1088 = charIDToTypeID("Chnl"); 
    var id1089 = charIDToTypeID("Ordn"); 
    var id1090 = charIDToTypeID("Trgt"); 
    ref162.putEnumerated(id1088, id1089, id1090); 
    desc238.putReference(id1087, ref162); 
    executeAction(id1083, desc238, DialogModes.NO); 
    } 
    catch(e) 
    { 
    //alert("This layer has NO layer mask!"); 
    activeDocument.selection.deselect(); 
    } 
}