【问题标题】:Photoshop scripting with JSX in for loop to change fill color of each layer在 for 循环中使用 JSX 编写 Photoshop 脚本以更改每个图层的填充颜色
【发布时间】:2021-03-23 18:27:53
【问题描述】:

所以,我正在修改使用 JSX 更改 PSD 文件中图层的填充颜色。我最终想要循环所有图层,关闭除一个以外的所有图层的可见性,编辑该图层的填充颜色,另存为 PNG,然后对 JSON 文件中的所有图层和所有颜色重复。我从小处着手,因为这是我的第一次尝试,但是如果您的解决方案可以帮助我在其他任务中抢占先机,那么将不胜感激。这是我所拥有的(alert 正确提示,但第 5 行收到错误 1302:没有引用第 5 行的此类元素):

    var layerNum = app.activeDocument.layers.length
    alert(layerNum);
    var i;
    for (i=0;i<layerNum;i++){
      var currentLayer = app.activeDocument.layers.index(i)
      var myColor = new SolidColor();
      //var RGB = HEXtoRGB(Y);
      myColor.rgb.red = RGB[255];
      myColor.rgb.green = RGB[0];
      myColor.rgb.blue = RGB[0];
      currentLayer.fill.color = myColor;
    }

这是因为图层的集合不是从 0 开始的吗?我应该从 layers.index(layerNum) 开始并使用 i-- 向下移动集合吗?任何见解都会有所帮助。提前感谢这个总是乐于助人的社区。​​p>

【问题讨论】:

    标签: javascript scripting jsx photoshop


    【解决方案1】:

    正如 KienT 指出的,您需要为图层使用方括号。

    另外,创建一个变量app.activeDocument 也很有用,因此您不必每次都输入它。向后(或向上)循环层很容易 - 只需记住将层长度减去 1。您还可以通过使循环从 1 而不是 0 开始进行调整,使其忽略背景。您还可以随时将图层可见性从 true 调整为 false(打开和关闭)。

    // call the source document
    var srcDoc = app.activeDocument;
    
    var layerNum = srcDoc.layers.length;
    // alert(layerNum);
    
    for (var i = layerNum -1; i >= 0; i--)
    {
      var currentLayer = srcDoc.layers[i];
      var myColor = new SolidColor;
    
      // Select the layers as you go 
      srcDoc.activeLayer = srcDoc.artLayers[i];
    
      // switch layer visibility to on
      srcDoc.visible = true;
    
      myColor.rgb.red = 255;
      myColor.rgb.green = 0;
      myColor.rgb.blue = 0;
    
      app.activeDocument.selection.fill(myColor, ColorBlendMode.NORMAL, 100, false);
    
    }
    

    【讨论】:

      【解决方案2】:

      这个var currentLayer = app.activeDocument.layers.index(i)

      应该是这样的:var currentLayer = app.activeDocument.layers[i]

      图层集合和数组差不多,都是从0开始的,所以你做对了

      【讨论】:

        猜你喜欢
        • 2011-01-29
        • 2013-10-17
        • 1970-01-01
        • 1970-01-01
        • 2021-10-01
        • 1970-01-01
        • 2021-01-16
        • 1970-01-01
        • 2013-01-12
        相关资源
        最近更新 更多