2011-09-08 22 views
9

Estoy investigando antes de escribir un script para Photoshop CS3. Quiero escribir el guion en Photoshop con JavaScript.¿Cómo se accede a la información de estilo de capa en Photoshop?

He revisado la Guía de JavaScript de Photoshop, pero no encuentro ninguna forma de obtener información de estilo de capa para una capa (trazo, degradado, brillo externo, etc.).

Hay una manera de establecer estilos de capa, pero no he podido encontrar nada que te permita obtener la información.

Solo tengo Photoshop CS3, entonces estoy buscando una solución que se adapte a eso.

+1

Sí, la documentación de Adobe apesta. –

+0

Jaja, sí, no hay ni una pista sobre cómo establecer opciones para diferentes estilos de capa (colores de degradado, ancho de trazo, etc.). –

+0

Todo lo que quería era copiar/pegar para PS (ctr-ins/shift-ins) para zurdos y me dijeron que tendría que guiarlo. Comenzó un largo viaje frustrante y se dio por vencido. –

Respuesta

1

Abra Adobe ExtendScript Toolkit. En el menú, vaya a Ayuda> Visor de modelos de objetos (o similar, el mío está en alemán).

Dentro del navegador de Object-Model en la pestaña lateral "Explorador", seleccione Photoshop. Ahora puede buscar con el campo de búsqueda en la esquina superior derecha.

Ver la imagen de abajo para ArtLayer 's deifinition y ArtLayer.applyStyle():

http://i.stack.imgur.com/UEmj6.png

enter image description here

Buscar alrededor, es mucho mejor que la documentación de Adobe.

+0

¡Un gran consejo! Esto es mucho más fácil de navegar que ese PDF tonto. Sin embargo, todavía no pude encontrar una forma de acceder a la información de estilo de capa. ¡Gracias por la respuesta! –

+0

El navegador de objetos ExtendScript es una mierda. No tienen SolidColor incluido como una de las clases documentadas. – thenonhacker

1

Espero no ser demasiado tarde, respondo a su publicación, porque tuve el mismo problema y encontré una solución en http://www.rags-int-inc.com/PhotoTechStuff/CollageTemplate/index.html. Este chico tiene un script llamado "Opciones de efectos de capa". Puede descargar la fuente en la parte inferior.

Bueno, es solo un panel para aplicar Efectos, pero si navegas por el código puedes extraer lo que necesites.

Aquí es un poco de exsample (lo que necesitaba) para aplicar un efecto derrame cerebral una la capa activa

function newStrokeEffect(strokeSize, strokeColor, strokePosition) { 
    var effectDescriptor = new ActionDescriptor(); 
    var effectColor = new ActionDescriptor(); 
    var strokeOpacity = 100.0;  // 0 - 100 % 
    var strokeBlend = "Nrml";  // Normal[Nrml], ColorBurn[CBrn], SoftLight[SftL}, Color[Clr ] 

    effectDescriptor.putBoolean(charIDToTypeID("enab"), true); 
    effectDescriptor.putEnumerated(charIDToTypeID("Styl"), charIDToTypeID("FStl"), charIDToTypeID(strokePosition)); 
    effectDescriptor.putEnumerated(charIDToTypeID("PntT"), charIDToTypeID("FrFl"), charIDToTypeID("SClr")); 
    effectDescriptor.putEnumerated(charIDToTypeID("Md "), charIDToTypeID("BlnM"), charIDToTypeID(strokeBlend)); 
    effectDescriptor.putUnitDouble(charIDToTypeID("Opct"), charIDToTypeID("#Prc"), strokeOpacity); 
    effectDescriptor.putUnitDouble(charIDToTypeID("Sz "), charIDToTypeID("#Pxl"), strokeSize); 
    effectColor.putDouble(charIDToTypeID("Rd "), strokeColor.rgb.red); 
    effectColor.putDouble(charIDToTypeID("Grn "), strokeColor.rgb.green); 
    effectColor.putDouble(charIDToTypeID("Bl "), strokeColor.rgb.blue); 
    effectDescriptor.putObject(charIDToTypeID("Clr "), charIDToTypeID("RGBC"), effectColor); 
    return(effectDescriptor); 
} 

var tmpC = new SolidColor(); 
tmpC.rgb.hexValue = "FF00FF"; 
var layerOptions = new ActionDescriptor(); 
var refr01 = new ActionReference(); 
var layerProperties = new ActionDescriptor(); 

layerOptions.putUnitDouble(charIDToTypeID("Scl "), charIDToTypeID("#Prc"), 400.0); 

var layerEffects = newStrokeEffect(2, tmpC, "InsF"); 

layerOptions.putObject(charIDToTypeID("FrFX"), charIDToTypeID("FrFX"), layerEffects); 

refr01.putProperty(charIDToTypeID("Prpr"), charIDToTypeID("Lefx")); 
refr01.putEnumerated(charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt")); 
layerProperties.putReference(charIDToTypeID("null"), refr01); 
layerProperties.putObject(charIDToTypeID("T "), charIDToTypeID("Lefx"), layerOptions); 

try { 
    executeAction(charIDToTypeID("setd"), layerProperties, DialogModes.NO); 
} catch(ex) { 
    if (ex != "Error: User cancelled the operation") 
     alert(scriptName + " newLayerEffect() exception caught? line[" + ex.line + "] " + ex); 
} 

no sabía el significado exacto de todas las líneas (se copia todo & pegar), pero funciona :-) (solo probado en Photoshop CS5)

2

Se ha agregado recientemente un nuevo módulo jamStyles a la biblioteca de scripts JSON Action Manager para Photoshop.

Entre otras cosas, se define dos funciones JavaScript jamStyles.getLayerStyle y jamStyles.setLayerStyle que proporcionan soporte para obtener y establecer el estilo de capa actual (ambos opciones de fusión yefectos de capa) usando un JSON objeto.

También se incluye una secuencia de comandos de utilidad llamada Get Layer Style.

+0

Finalmente después de horas de búsqueda, este funciona. Devuelve exactamente lo que necesito: '{" blendOptions ": {...}," layerEffects ": {...}}' - ¡increíble! –

Cuestiones relacionadas