Skript zum Ändern einer Farbe in allen Ebenen einer PSD-Datei in eine andere Farbe?

Ist es möglich, alle Ebenen zu durchlaufen (es gibt zu viele Ebenen) und eine Farbe durch eine andere zu ersetzen? Benötigen Sie einen automatisierten Ansatz, ein Skript oder eine einfache Aktion.

Loop through all layers{
    Change Fill color A to X
    Change Text color A to X
}
Ich brauche noch mehr Informationen darüber, was Sie ersetzen möchten. Ist es ein einzelnes Element pro Ebene oder versuchen Sie, nach einer Farbe zu suchen, diese Farbe auszuwählen und sie zu ersetzen?
Wenn Sie eine Ebene auswählen, zu der Sie wechseln können Image > Adjustment > Replace color, um eine Farbe zu ändern, muss dieser Vorgang automatisiert werden, wenn wir zu viele Ebenen haben.

Antworten (1)

Das Ändern der Textfarbe A in X ist einfach (vorausgesetzt, Sie haben keine Gruppen, dann wird es etwas komplexer):

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];
}