Digamos que tengo 100 fotos en una carpeta. En el primero, me gustaría cambiar el Hue
a -180
y guardarlo. En el segundo, me gustaría cambiar el Hue
a -170
. En el tercero, me gustaría cambiar a Hue
, -160
y así sucesivamente.
¿Hay alguna manera de procesar por lotes con un valor diferente cada vez?
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:
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.
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.
Tengo un script que hará exactamente eso. Simplemente guárdelo como algo así changeHuePerLayer.jsx
y 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
);
}
scott