Las acciones son muy populares. Son fáciles de usar y pueden ahorrarle mucho tiempo, pero al final del día, no son muy potentes y ofrecen una versatilidad muy baja. Ahí es donde las funciones de scripting de Photoshop entran en acción. Vamos a mostrarte las posibilidades casi infinitas que ofrece el scripting de Photoshop..
Una acción es simplemente una forma de grabar una serie de pasos para que podamos reproducirlos una y otra vez. Si desea poder dibujar rápidamente un cuadrado rojo de 50x50 px presionando un botón, simplemente grabe a sí mismo haciéndolo una vez, y luego juegue la acción cuando lo necesite. Has terminado Pero, ¿qué pasa si a veces necesitas un cuadrado rojo de 50px y otras veces necesitas un azul de 100px? Bueno, tendrías que grabar otra acción para la segunda figura. Las acciones ofrecen una versatilidad muy baja, porque los pasos registrados son estáticos: su comportamiento no cambia según las variables externas.
Photoshop scripting le permite agregar lógica condicional, para que el script tome decisiones automáticamente en función de la situación actual o de la entrada del usuario. Por ejemplo, en el ejemplo anterior, una secuencia de comandos de Photoshop podría pedir al usuario el ancho y el color del cuadrado,
y luego renderizarlo correctamente. Además, los scripts ofrecen muchas más ventajas sobre las acciones, como el manejo avanzado de archivos, el soporte de múltiples aplicaciones, etc..
Un script de Photoshop es un archivo de texto con código que le dice al programa que realice ciertas tareas. Estos scripts se pueden escribir en tres lenguajes de scripting diferentes. Si está ejecutando Mac OS, puede utilizar AppleScript y JavaScript. En Windows, también puede utilizar VBScript y JavaScript. Dado que JavaScript es totalmente compatible con ambas plataformas, es la mejor opción para garantizar que nuestro script llegue a la audiencia más amplia, por lo que nos centraremos en él a lo largo de este artículo. Además, JavaScript es el lenguaje de scripting más popular del lado del cliente, por lo que es probable que hayas oído hablar de él anteriormente..
El motor de secuencias de comandos de Photoshop nos proporciona formas de manipular los diferentes elementos de la aplicación, como capas, guías, canales, documentos, etc. Casi todos los elementos de Photoshop se pueden examinar y modificar desde una secuencia de comandos. Estos se reflejan en el modelo de objeto de documento de Photoshop. En este artículo vamos a trabajar con algunos elementos básicos, pero hay muchos, puedes verlos todos en la documentación oficial de Photoshop Scripting..
Junto con Photoshop hay un programa llamado Adobe ExtendScript Toolkit CS5. Es un entorno de desarrollo integrado para secuencias de comandos, no solo para Photoshop, sino para cualquiera de los miembros de Creative Suite. Para simplificar las cosas, vamos a utilizar un editor de texto plano como el Bloc de notas, pero para las grandes secuencias de comandos, Adobe ExtendScript Toolkit ofrece una gran cantidad de herramientas, como la finalización automática de códigos, la ayuda integrada y un depurador..
Así que, sin más dilación, vamos a la carpeta de Presets / Scripts en su directorio de Photoshop, creamos un archivo de texto vacío llamado firstScript.jsx y lo abrimos con su editor de texto favorito.
Cuando tratamos con scripts de Photoshop, todo comienza con el objeto "app". Representa la aplicación y contiene todos los demás objetos de forma jerárquica. En este primer paso vamos a ver algunas propiedades básicas del objeto "app".
Diríjase al editor de texto y escriba lo siguiente en firstScript.jsx
alerta ("Estás usando la versión de Photoshop" + app.version);
A continuación, inicie Photoshop y vaya a Archivo> Scripts> firstScript. Verá un cuadro de alerta que dice que "está usando Photoshop versión 12.0.0" (o la versión que está usando). La función "alerta" muestra un mensaje, una cadena con el texto y la versión de la aplicación, leída de la propiedad "versión" del objeto "aplicación". En JavaScript, puede acceder a las propiedades y los elementos secundarios de un objeto mediante "." operador, como en "app.version".
En Photoshop, el entorno de trabajo básico es el documento. El objeto "aplicación" contiene una colección llamada "documentos", que obviamente representa el conjunto de documentos abiertos dentro de Photoshop. Volvamos al editor, reemplace el contenido de firstScript.jsx con lo siguiente:
if (app.documents.length> 0) alert ("Hay" + app.documents.length + "documentos abiertos"); else alert ("No hay documentos abiertos");
Si inicia la secuencia de comandos (Archivo> Secuencias de comandos> FirstScript), el mensaje de alerta cambiará dependiendo del número de documentos abiertos actualmente. El código es muy simple, la primera línea verifica si el número de documentos abiertos (es decir, la longitud del conjunto de documentos en la aplicación) es mayor que cero, mostrando un mensaje con ese número. De lo contrario, muestra un mensaje que dice que no hay documentos abiertos. Fácil, ¿no es así? Pero hasta ahora esto no parece demasiado útil..
Probemos con un ejemplo más útil. Por ejemplo, suponga que desea dividir su documento en columnas de igual tamaño. Hacerlo manualmente implicaría medir el ancho del documento, dividirlo por el número de columnas y luego colocar las guías con cuidado. ¿Y si necesitas doce columnas? Eso sería una pérdida total de tiempo. Veamos un trozo de código que hace ese trabajo:
if (app.documents.length> 0) var numberColumns = parseInt (prompt ("¿Cuántas columnas necesita?", 5)); var doc = app.activeDocument; var documentWidth = doc.width; var columnWidth = documentWidth / numberColumns; para (i = 0; i <= numberColumns; ++i) doc.guides.add(Direction.VERTICAL, i * columnWidth);
¡No tengas miedo! El código es muy fácil. Ya sabe lo que significa la primera línea: "si hay al menos un documento abierto, haga lo siguiente". La siguiente línea usa la función "prompt" para pedirle al usuario el número de columnas, y pasa su resultado a la función "parseInt", que convenientemente lo convierte en un número entero. El resultado se almacena en la variable "numberColumns". En caso de que no lo sepa, las variables se utilizan en lenguajes de programación para almacenar valores, por lo que si desea guardar un valor determinado, use una variable.
La tercera línea crea una nueva variable, llamada "doc", que representa el documento activo. La cuarta línea lee el ancho del documento actual y lo almacena en la variable "documentWidth". La quinta línea calcula el ancho de cada columna dividiendo el ancho total por el número de columnas. Finalmente, la sexta línea comienza un bucle que se repite una vez por columna (más una vez más para la última guía). En cada iteración, la variable "i" mantendrá el número de columna actual: 0, 1, 2, 3? La línea séptima agregará una guía vertical al documento actual, colocado en la posición correcta.
Para probar el código, es lo mismo que antes. Reemplace el contenido de nuestro archivo de FirstScript con el código y luego vaya a Archivo> Secuencias de comandos> FirstScript.
Así que has creado un gran diseño web, usando la siempre bella Helvetica, pero parece que el cliente no lo tiene instalado, él prefiere Arial. Además, le gustaría asegurarse de que todos conozcan los derechos de autor del material, por lo que insiste en agregar un aviso de derechos de autor en cada elemento del texto. "No hay problema, ya sé Photoshop Scripting!", Respondes. Veamos cómo hacerlo:
if (app.documents.length! = 0) var doc = app.activeDocument; para (i = 0; i < doc.artLayers.length; ++i) var layer = doc.artLayers[i]; if(layer.kind == LayerKind.TEXT) layer.textItem.font = "ArialMT"; layer.textItem.contents += " ? 2011 Envato";
Las dos primeras líneas ya son conocidas. Entonces, hay un nuevo elemento aquí, la colección de capas. En Photoshop scripting, hay dos tipos de capas, por una parte tenemos los "Conjuntos de capas", que son esencialmente grupos, y por otra parte tenemos las "Capas de arte", que incluyen todos los otros tipos de capas: capas normales, capas de texto, capas de ajuste, etc. Nuestro objeto de documento ("app.activeDocument") tiene una propiedad llamada "artLayers", para acceder solo a las capas artísticas, otra propiedad llamada "layerSets" para acceder a los conjuntos de capas, y luego una propiedad llamada simplemente "capas", que incluye los dos conjuntos anteriores.
En nuestro código estamos atravesando el conjunto de capas artísticas de nuestro documento. En cada iteración, almacenamos nuestra capa actual en la variable "capa", luego verificamos si el tipo de capa es "LayerKind. TEXT", que representa una capa de texto. En ese caso, accedemos a la propiedad textItem de nuestra capa, que contiene todas las características del texto, y cambiamos su atributo "fuente" a "ArialMT" (necesitamos usar el nombre PostScript de la fuente). Además, agregamos el aviso de derechos de autor a los contenidos de la capa utilizando el operador "+ =" en la propiedad "contenidos".
Hemos dejado lo más duro para el final. El ejemplo que propusimos al principio del artículo consistía en tener una forma de crear cuadrados automáticamente, simplemente eligiendo el tamaño y el color. Bueno, esa es una tarea bastante fácil para un script.
if (app.documents.length> 0) var doc = app.activeDocument; var squareSize = parseInt (prompt ("Seleccionar el tamaño del cuadrado", 50)); var squareColor = new RGBColor; squareColor.hexValue = prompt ("Seleccione el color del cuadrado (hexadecimal)", "ff0000"); var newLayer = doc.artLayers.add (); newLayer.name = "Square -" + squareSize + "-" + squareColor.hexValue; selectedRegion = Array (Array (0,0), Array (0, squareSize), Array (squareSize, squareSize), Array (squareSize, 0)); doc.selection.select (selectedRegion); doc.selection.fill (squareColor); doc.selection.deselect ();
Este es el código más largo que hemos visto hasta ahora, pero no es difícil de entender. En la tercera línea, le pedimos al usuario el tamaño del cuadrado y lo almacenamos en la variable "squareSize". A continuación, creamos un nuevo RGBColor para especificar el color del cuadrado, y leemos el valor hexadecimal de la entrada del usuario.
El siguiente paso es crear una capa. Accedemos al conjunto "artLayers" desde el documento activo, y usamos su método "agregar" para agregar una nueva capa, almacenando una referencia a ella en la variable "newLayer". A continuación, cambiamos su nombre en consecuencia..
El último paso es hacer una selección. Creamos una matriz de matrices que indica las coordenadas de cada esquina de la selección. Luego pasamos esa región al método "seleccionar" del objeto "selección" del documento activo.
Finalmente, llenamos la selección utilizando el color definido previamente y luego deseleccionamos todo. Nuestro creador de cuadros ha terminado.!
Los scripts han demostrado ser mucho más poderosos y configurables que las acciones. Ciertamente son un poco más difíciles de crear, pero los resultados valen el esfuerzo. Además, hay una comunidad cada vez más grande y de apoyo, e incluso se han creado bibliotecas completas de JavaScript para las secuencias de comandos de Photoshop, como xtools, que es de código abierto. Estas bibliotecas intentan llenar algunos vacíos que de otro modo requerirían soluciones de nivel inferior.
Además, dada la creciente popularidad de los paquetes de acción por poco dinero, creo que puede haber un mercado emergente para los paquetes de scripts, especialmente
para tareas complejas de diseño y cosas por el estilo. Espero que, con este artículo, haya aprendido los conceptos básicos de las secuencias de comandos de Photoshop: diviértase escribiendo sus propias secuencias de comandos.!
P. S .: ahora puede ser una buena oportunidad para ver NetTuts Javascript de la serie de videos Null, lo que le dará una buena comprensión de los conceptos básicos de JavaScript de principio a fin..