在Photoshop中使用Extendscript将选择设置为图层透明度通道

时间:2013-07-08 16:37:35

标签: javascript photoshop extendscript

在Photoshop中,可以通过按ctrl / cmd并单击图层窗格中图层的缩略图,将“选择”设置为图层的“透明度通道”。将此作为动作录制时,会显示“将选择设置为:图层的透明度通道'LAYERNAME'”。

是否可以使用Photoshop的Extendscript复制此功能以用于Photoshop插件,如何实现这一目标?我需要动态打开文件并以这种方式选择某个图层。

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

昨天试图弄清楚这一点。从倾注文档我得出结论,你有2个基本选项:

  1. 在Photoshop中创建一个操作,只需执行选择并使用app.doAction([actionName], [actionSetName])从脚本中调用它。

  2. 使用脚本侦听器插件提取您自己的函数以进行选择并直接在脚本中使用它。

  3. 选项1似乎有点“安全”,但它确实引入了依赖于具有当前加载在PS中的特定名称和功能的动作;这很糟糕。

    选项2有点难以维护,但它很好地封装了自身内部的所有依赖项。如果你想使用它,那么尝试在你的脚本中添加和调用这个函数(从脚本监听器获得的稍微清晰的版本):

    function SelectTransparency()
    {
        var idChnl = charIDToTypeID( "Chnl" );
    
        var actionSelect = new ActionReference();
        actionSelect.putProperty( idChnl, charIDToTypeID( "fsel" ) );     
    
        var actionTransparent = new ActionReference();    
        actionTransparent.putEnumerated( idChnl, idChnl, charIDToTypeID( "Trsp" ) );
    
        var actionDesc = new ActionDescriptor();
        actionDesc.putReference( charIDToTypeID( "null" ), actionSelect );
        actionDesc.putReference( charIDToTypeID( "T   " ), actionTransparent );
    
        executeAction( charIDToTypeID( "setd" ), actionDesc, DialogModes.NO );
    }
    

    在调用方法之前,请确保您具有所需的文档和有效图层。希望它有所帮助。