Gibt es eine Möglichkeit, das Ändern des Farbtons vieler Ebenen mit einem anderen Wert pro Ebene zu automatisieren?

Nehmen wir an, ich habe 100 Fotos in einem Ordner. Beim ersten möchte ich das Huein ändern -180und speichern. Beim zweiten möchte ich das ändern Huein -170. Beim dritten möchte ich das Huein ändern -160und so weiter.

Gibt es eine Möglichkeit, jedes Mal eine Stapelverarbeitung mit einem anderen Wert durchzuführen?

Per Definition wäre es nicht wirklich eine "Batch" -Verarbeitung, wenn es jedes Mal eine Variation gibt.

Antworten (3)

Ich würde wahrscheinlich ImageMagick verwenden .

Es gibt eine Funktion zum Ändern des Farbtons, die jedoch prozentual und nicht gradbasiert ist.

Farbtonmodulation

Dreht die Farben des Bildes zyklisch. Um dies zu erreichen, erzeugt der angegebene Farbtonwert eher eine „Moduladdition“ als eine Multiplikation. Beachten Sie jedoch, dass der Farbton mit einem Prozentsatz und nicht mit einem Winkel gedreht wird.

convert rose:   -modulate 100,100,0      mod_hue_0.gif
convert rose:   -modulate 100,100,33.3   mod_hue_33.gif
convert rose:   -modulate 100,100,66.6   mod_hue_66.gif
convert rose:   -modulate 100,100,100    mod_hue_100.gif
convert rose:   -modulate 100,100,133.3  mod_hue_133.gif
convert rose:   -modulate 100,100,166.6  mod_hue_166.gif
convert rose:   -modulate 100,100,200    mod_hue_200.gif

Ergebnis:

Farbtonmodulation: 0 Farbtonmodulation: 33,3 Farbtonmodulation: 66,6 Farbtonmodulation: 100 Farbtonmodulation: 133,3 Farbtonmodulation: 166,6 Farbtonmodulation: 200

In diesem Beispiel wird die meiste schwere Arbeit für Sie erledigt, Sie müssten nur ein Skript erstellen, das alle Dateien in einem Verzeichnis indiziert und einen sequenziellen Wert anwendet, der dem modulate-Argument gegeben wird.

+1 für imageMagick. Fummelig in Gang zu bringen, aber außerordentlich kraftvoll.

Dies könnte mit PS-Scripting erreicht werden. Da es sich um eine ziemlich einzigartige Anfrage handelt, haben Sie möglicherweise Probleme, ein vorhandenes Skript zu finden, das dies tut. Sie müssten es wahrscheinlich entweder selbst codieren oder jemanden einstellen, der es für Sie tun kann.

Bereits zur Verfügung gestellt ;)

Ich habe ein Skript, das genau das tun wird. Speichern Sie es einfach als etwas wie changeHuePerLayer.jsxund ziehen Sie es per Drag & Drop auf das Photoshop-Dock-Symbol auf dem Mac. Unter Windows müssen Sie es meiner Meinung nach über das Menü öffnen (nicht sicher, wo).

#target photoshop
app.bringToFront();

var
    LOWER_HUE_LIMIT = -180,
    UPPER_HUE_LIMIT = 180;
var
    hueValue = LOWER_HUE_LIMIT,
    hueIncrementor = 10,
    currentDoc = app.activeDocument;


for ( var i = 0; i < currentDoc.layers.length; i++ ) {
    currentDoc.activeLayer = currentDoc.layers[i];
    hueValue = hueValue < UPPER_HUE_LIMIT ? hueValue + hueIncrementor : LOWER_HUE_LIMIT;
    applyHsl( hueValue, 0, 0 );
}


/**
 *
 * @param {number} hue
 * @param {number} saturation
 * @param {number} lightness
 */
function applyHsl( hue, saturation, lightness ) {
    var HUE_SAT_ADJUSTMENT_V2_SYM  = 'Hst2';
    var COLORIZE_SYM               = 'Clrz';
    var ADJUSTMENT_SYM             = 'Adjs';
    var HUE_SYM                    = 'H   ';
    var SATURATION_SYM             = 'Strt';
    var LIGHTNESS_SYM              = 'Lght';
    var HUE_SATURATION_SYM         = 'HStr';

    var colorizeDescriptor = new ActionDescriptor();
    var hueSatDescriptor = new ActionDescriptor();
    var hueSatAdjustmentList = new ActionList();

    colorizeDescriptor.putBoolean( charIDToTypeID( COLORIZE_SYM ), false );

    hueSatDescriptor.putInteger( charIDToTypeID( HUE_SYM ), hue );
    hueSatDescriptor.putInteger( charIDToTypeID( SATURATION_SYM ), saturation );
    hueSatDescriptor.putInteger( charIDToTypeID( LIGHTNESS_SYM ), lightness );

    hueSatAdjustmentList.putObject( charIDToTypeID( HUE_SAT_ADJUSTMENT_V2_SYM ), hueSatDescriptor );
    colorizeDescriptor.putList( charIDToTypeID( ADJUSTMENT_SYM ), hueSatAdjustmentList );

    executeAction(
        charIDToTypeID( HUE_SATURATION_SYM ),
        colorizeDescriptor,
        DialogModes.NO
    );
}