¿Hay alguna forma de automatizar el cambio de tono de muchas capas con un valor diferente por capa?

Digamos que tengo 100 fotos en una carpeta. En el primero, me gustaría cambiar el Huea -180y guardarlo. En el segundo, me gustaría cambiar el Huea -170. En el tercero, me gustaría cambiar a Hue, -160y así sucesivamente.

¿Hay alguna manera de procesar por lotes con un valor diferente cada vez?

Por definición, no sería realmente un procesamiento "por lotes" si hay una variación cada vez.

Respuestas (3)

Probablemente usaría ImageMagick .

Hay una función disponible para modificar el tono, pero se basa en porcentajes en lugar de grados.

Modulación de tono

Rota los colores de la imagen, de manera cíclica. Para lograr esto, el valor Hue dado produce una 'suma de módulo', en lugar de una multiplicación. Sin embargo, tenga en cuenta que el tono se rota usando un porcentaje, y no un ángulo.

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

Resultado:

modulación de tono: 0 modulación de tono: 33.3 modulación de tono: 66.6 modulación de tono: 100 modulación de tono: 133.3 modulación de tono: 166.6 modulación de tono: 200

La mayor parte del trabajo pesado se hace por usted en ese ejemplo, solo necesitaría crear un script que indexe todos los archivos en un directorio y aplique un valor secuencial dado al argumento de modulación.

+1 para imagenMagick. Difícil de poner en marcha, pero extraordinariamente poderoso.

Esto podría lograrse con secuencias de comandos de PS. Como es una solicitud bastante única, es posible que tenga problemas para encontrar un script existente que haga eso. Probablemente tendría que codificarlo usted mismo o contratar a alguien que pueda hacerlo por usted.

Ya proporcionado ;)

Tengo un script que hará exactamente eso. Simplemente guárdelo como algo así changeHuePerLayer.jsxy arrástrelo y suéltelo en la parte superior del ícono del muelle de Photoshop en la Mac. En Windows, creo que debe abrirlo desde el menú (no estoy seguro de dónde).

#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
    );
}