¿Script para cambiar un color en todas las capas de un archivo PSD a otro color?

¿Es posible recorrer todas las capas (hay demasiadas capas) y reemplazar un color con otro? Necesita enfoque automatizado, guión o acción simple.

Loop through all layers{
    Change Fill color A to X
    Change Text color A to X
}
Necesitará más información sobre lo que está tratando de reemplazar. ¿Es un solo elemento por capa o está tratando de buscar un color, seleccionar ese color y reemplazarlo?
Al seleccionar una capa a la que puede ir Image > Adjustment > Replace colorpara cambiar un color, necesito la automatización de este proceso si tenemos demasiadas capas.

Respuestas (1)

Cambiar el color del texto A a X es sencillo (siempre que no tenga grupos, se vuelve un poco más complejo):

var colourA = "28bd98"; 
var colourY = "ff00ff"; 


changeFontColour(colourA, colourY);



function changeFontColour(X,Y)
{
  var numOfLayers = app.activeDocument.layers.length;

  // main loop
  for (var i = numOfLayers -1; i >= 0  ; i--)
  {
    var thisLayer = app.activeDocument.layers[i];

    if (app.activeDocument.layers[i].kind == 'LayerKind.TEXT')
    {
      var currentFontCol = getFontColour(thisLayer);

      // alert(currentFontCol + "\n" + X);

      if (currentFontCol.toUpperCase() == X.toUpperCase())
      {

        var myColour = new SolidColor();
        var RGB = HEXtoRGB(Y);
        myColour.rgb.red = RGB[0];
        myColour.rgb.green = RGB[1];
        myColour.rgb.blue = RGB[2];

        // replace text colour
        thisLayer.textItem.color = myColour;
      }
    }
  } //end of loop
}

function getFontColour(alayer)
{
  var fontColor = alayer.textItem.color;
  return fontColor.rgb.hexValue;
}

function HEXtoRGB (hex)
{
  var c = 1
  if (hex.charAt(0) != "#") c = 0;

  var r = parseInt(hex.substring(c,c+2),16)
  var g = parseInt(hex.substring(c+2,c+4),16)
  var b = parseInt(hex.substring(c+4,c+6),16)
  return [r, g, b];
}