Crear un calendario gráfico a mano no es una tarea fácil. Por eso es mejor si puede encontrar alguna forma de automatizar el proceso. En el tutorial de hoy, le mostraremos cómo generar un calendario de fondo personalizado con un año completo usando JavaScript. Si eres un poco programador de computadoras, es genial, si no, no te preocupes, esto será bastante sencillo..
Según Adobe, una secuencia de comandos es una serie de comandos que le indican a Photoshop que realice una o más tareas. Lo primero que debe hacer es echar un vistazo a la Referencia de JavaScript de Adobe. Lo puedes encontrar aquí. Este contiene todas las propiedades de los objetos y los métodos que admite Photoshop CS4, con ejemplos, y le dará una idea de qué tipo de cosas puede hacer con las secuencias de comandos en Photoshop. Si está utilizando una versión anterior, puede encontrar referencias aquí.
Entonces empecemos. La idea principal para el proyecto es crear capas de texto para cada mes que contengan las fechas, por lo que trabajaremos principalmente con la manipulación del texto. Abra ExtendScript Toolkit y cree un nuevo archivo JavaScript (Comando + N). Esto contendrá todos los comandos que vamos a dar a Photoshop. Si no desea utilizar el Kit de herramientas de ExtendScript, puede usar cualquier editor de texto simple.
Primero tenemos que definir algunas variables para los atributos del documento y el esquema de color del calendario. Hice mi documento 1280x800 a una resolución de 72 píxeles / pulgada, lo llamé "PhotoshopScriptCalendar" y elegí 2010 como el año del calendario que crearemos.
Este es el esquema de color básico que vamos a utilizar. "NormalColor" es para los días de la semana y los nombres de los meses. Para los domingos usé un color diferente para resaltarlos, esto es "highlightColor", y usaremos "backColor" como color de fondo de calendario predeterminado si no seleccionamos una imagen personalizada para eso.
Como dije antes, principalmente vamos a trabajar con la manipulación del texto, por lo que debemos definir algunas variables para la sangría y el texto que usaremos repetidamente, como los encabezados de los meses..
Para establecer un color diferente a la columna de los domingos, tenemos que hacer que sea una capa de texto diferente de los otros días. Por eso tenemos dos encabezados: "monthHeader": de lunes a sábado y "sundayHeader". Cada una de estas dos variables termina con dos "\ r". Estos representan nuevos caracteres de línea, al igual que presionar la tecla de retorno en su teclado. A continuación definimos la variable de sangría. Tenga en cuenta que el primero de enero es un viernes, por lo que para cada día anterior debemos poner una sangría en lugar de números. El número de espacios en blanco de estas variables depende de la fuente que use y del tamaño de la misma, por lo que necesitará un poco de rastro y error antes de hacerlo bien. Finalmente, haga una lista de todos los nombres de los meses..
Ahora que tenemos todo lo que necesitamos, podemos comenzar a crear el documento .psd.
Como puede ver, el código es bastante legible. En nuestra aplicación Photoshop, agregamos un nuevo documento con el ancho, alto, resolución y nombre que definimos anteriormente, un modo de color, y conservamos su referencia en una nueva variable "doc". Por defecto, todos los documentos nuevos están en RGB, por lo que podríamos haber omitido ese parámetro, pero si quiere CMYK, por ejemplo, puede usar "NewDocumentMode.CMYK". Lo mismo con LAB, GRAYSCALE y BITMAP. Puedes encontrar todo esto en las referencias enlazadas arriba..
A continuación, hacemos una nueva selección y seleccionamos todo el documento, lo rellenamos con nuestro color de fondo y finalmente lo deseleccionamos..
Luego necesitamos agregar un fondo personalizado de una imagen existente. El fondo degradado del resultado final publicado anteriormente es en realidad una imagen separada.
Para esto vamos a utilizar la función openDialog (). Esto abre el cuadro de diálogo de "Archivo> Abrir" y coloca en la matriz "archivo" la lista de imágenes seleccionadas. Vamos a usar solo la primera imagen seleccionada que está en la matriz de "archivo" en la posición 0. Por lo tanto, primero debemos verificar si se seleccionó alguna imagen.
A continuación, vamos a cargar la imagen seleccionada en nuestra aplicación y obtener una referencia a ella llamando a "app.activeDocument", que devuelve el documento actualmente activo en Photoshop..
Cambiar el tamaño de la imagen a nuestro ancho y alto preferido. Nuevamente, hacemos una nueva selección de todo el documento, copiamos esta selección y cerramos el documento con la opción de no guardar los cambios..
Finalmente, en nuestro documento de calendario, pega la selección. Esto coloca la imagen como la primera capa sobre la capa de fondo. Entonces el nombre algo como "BackgroundImage".
Observe que si no se seleccionó ninguna imagen en el cuadro de diálogo, ninguno de estos comandos se habría ejecutado..
DE ACUERDO. Ahora viene la generación actual del calendario. Esto podría ser un poco más difícil, pero lo iremos paso a paso y esperamos que no sea tan difícil de entender.
Necesitamos hacer un conjunto de acciones para cada mes del año. Para esto utilizamos un bucle "for". Básicamente, esto toma la variable "curr", que usamos para denotar el mes actual con el que estamos trabajando, establece su valor inicial en 0, luego realiza el conjunto de acciones repetidamente, incrementando el valor de "curr" cada vez, hasta que Se convierte en 12. Así, pasando por todos los doce meses..
Primero, debemos definir dos variables que vamos a utilizar para ubicar nuestros meses en el documento como una cuadrícula. Estos representan las compensaciones de X e Y de cada mes. Vamos a poner 4 meses en una sola fila, por lo que para el desplazamiento X vamos a usar la operación "%". Esto devuelve el resto de la división de "curr" a 4. Este desplazamiento será el mismo para enero, mayo, septiembre, para febrero, junio, octubre, etc., para cada mes en la misma columna. Para el desplazamiento Y, usamos la función javascript "Math.floor ()" que devuelve el valor más grande, más pequeño que el resultado de la división de "curr" a 4. Por lo tanto, para los meses de la misma fila, el desplazamiento Y es el mismo.
Al final, queremos tener las capas para cada mes en un grupo separado. Vamos a comenzar creando un grupo de capas y asignándole el nombre del mes actual. Usamos aquí la lista de meses que definimos anteriormente..
A continuación, creamos una nueva capa de texto dentro de nuestro grupo y establecemos su nombre en el mes actual. Este será nuestro nombre de mes..
Ahora tenemos que configurar los atributos de texto, como el color del texto, el tamaño de fuente y la justificación. Vamos a configurar el tipo de texto en "PARAGRAPHTEXT" y le daremos a nuestra capa las dimensiones preferidas. El atributo "contenidos" de la variable "monthName" representa el texto real que será visible dentro de la capa, por lo que queremos que sea el nombre del mes actual.
Finalmente, vamos a rotar la capa 90 ° en sentido contrario a las agujas del reloj y colocar nuestra capa. Aquí vamos a utilizar nuestras variables de compensación "x" y "y".
Tenga en cuenta que el posicionamiento se realiza en relación con la esquina superior izquierda de las capas, pero como lo hemos girado 90 ° CCW, ahora se ha convertido en la esquina inferior izquierda. Si su documento tiene dimensiones diferentes a las mías, es posible que deba cambiar las constantes que utilicé para colocar. Los valores que utilicé se enumeran a continuación..
A continuación vamos a hacer la capa de texto que contendrá todas las fechas en el mes actual, excepto los domingos. Lo agregaremos al grupo que creamos anteriormente y estableceremos su nombre, justificación, color de fuente y tamaño, y lo posicionaremos. Vamos a agregar el contenido de esto un poco más tarde, explicaré por qué, cuando lleguemos a ese punto.
Lo mismo para la capa de domingos, pero esta vez vamos a configurar el color a "resaltar color".
Ahora, necesitamos crear dos variables que mantendrán nuestro texto como lo generamos, "texto" contendrá los días de semana y "textSun" los domingos. Comenzamos agregando los encabezados y colocando la sangría para el primer día del mes. Creamos una nueva fecha con la función "Fecha ()" de javascript del año de nuestro calendario, el mes actual y el primero de ese mes, y obtenemos su posición en la semana. Recuerde, la numeración siempre comienza desde 0, por ejemplo, si el primer día del mes es un lunes, "n" será 0, si es un martes, "n" será 1 y así sucesivamente. Luego debemos agregar la sangría que definimos al principio a nuestra variable de "texto" tantas veces como sea necesario. Si el primero del mes es un miércoles, por ejemplo, agregaremos la sangría dos veces.
DE ACUERDO. Es hora de generar todos los números para el mes. Para esto necesitamos saber cuántos días hay en nuestro mes actual y necesitamos los números en formato de "ceros iniciales", por lo que debemos regresar y definir dos funciones personalizadas: "daysInMonth" y "makeDay". Así que, por favor, desplácese hasta la parte superior de su código y agregue estas funciones. Como dije, la función "daysInMonth" devuelve el número de días del mes que le damos, y "makeDay" devuelve el número que le damos en un formato específico y agrega algunos espacios en blanco, necesarios para espaciar los días del mes. Entonces, por ejemplo, si llamamos a la función "daysInMonth" con el año = 2010 y al mes = 0 (enero) devolverá el número 31. Si llamamos a la función "makeDay" con d = 3 por ejemplo, devolverá el texto "03", pero si d = 13 devolverá "13". Observe que si "d" es menor que 10, agregará un cero antes que.
Vamos a comenzar desde d = 1 e incrementarlo hasta que alcance la cantidad de días en el mes. Ahora, si "i" tiene el valor "6" significa que es un domingo, por lo que debemos agregarlo a la capa del domingo. Recuerde poner una "\ r" aquí para la nueva línea. De lo contrario, lo añadimos a los días laborables. Aquí agregamos una nueva línea solo si el día actual es "Sábado" ("i" es "5"). Al final, tenemos que incrementar tanto "i" como "d", y si el valor de "i" alcanza "7", es decir, si el último día que se agregó fue un domingo, tenemos que volver a "0"..
Finalmente, tenemos todas las fechas en nuestras variables de texto y podemos agregarlas a nuestras capas. La razón por la que hemos retrasado este paso es que a Photoshop le lleva algún tiempo agregar texto a una capa, por lo que es mejor agregarlo todo de una vez, en lugar de agregar cada día por separado..
Por lo tanto, ahora se generan todas las capas de mes, y todo lo que tenemos que hacer es crear la capa de año y esa pequeña línea en la parte inferior. Para la capa de año es el mismo procedimiento que usamos antes, cree una nueva capa, asígnele un nombre, tamaño de texto y color, y colóquela donde queramos.
Para el resultado final es un poco diferente. Primero debemos definir una región con coordenadas X e Y para las cuatro esquinas, luego hacer una selección de esa región, rellenarla con nuestro color en una nueva capa y finalmente deseleccionarla.
Todo nuestro código está hecho! Lo único que hay que hacer ahora es ejecutarlo. Si está utilizando ExtendScript Toolkit, en el menú desplegable, seleccione "Adobe Photoshop", si no tiene Photoshop abierto, haga clic en el pequeño icono a la izquierda "Conectar a la aplicación de destino" y luego presione el icono de reproducción. Si ha usado un editor de texto diferente, guarde el archivo con las extensiones ".js" o ".jsx" y ejecútelo desde Photoshop: Archivo> Secuencias de comandos> Examinar y luego seleccione su archivo.
¡Terminamos! Espero que hayas disfrutado trabajando en este pequeño proyecto. Los scripts en Photoshop son muy útiles cuando se tienen que hacer acciones repetitivas y pueden hacer su trabajo mucho más fácil una vez que los domine. No dudes en enviarnos cualquier sugerencia que tengas, siempre son bienvenidas.!