Créer un calendrier graphique à la main n’est pas une tâche facile. C'est pourquoi il est préférable que vous trouviez un moyen d'automatiser le processus. Dans le tutoriel d'aujourd'hui, nous allons vous montrer comment générer un calendrier en arrière-plan personnalisé d'une année complète à l'aide de JavaScript. Si vous êtes un peu un programmeur informatique, c'est génial, sinon, ne vous inquiétez pas, cela sera assez simple.
Selon Adobe, un script est une série de commandes qui indiquent à Photoshop d'effectuer une ou plusieurs tâches. La première chose à faire est de jeter un coup d'œil à la référence JavaScript d'Adobe. Vous pouvez le trouver ici. Il contient toutes les propriétés et méthodes d'objet prises en charge par Photoshop CS4, avec des exemples, et vous donnera une idée du type de tâches que vous pouvez effectuer avec les scripts dans Photoshop. Si vous utilisez une version plus ancienne, vous pouvez trouver des références ici..
Alors, commençons. L'idée principale du projet est de créer des calques de texte pour chaque mois contenant les dates. Nous allons donc travailler principalement avec la manipulation de texte. Ouvrez ExtendScript Toolkit et créez un nouveau fichier JavaScript (Commande + N). Cela contiendra toutes les commandes que nous allons donner à Photoshop. Si vous ne souhaitez pas utiliser ExtendScript Toolkit, vous pouvez utiliser n'importe quel éditeur de texte..
Nous devons d’abord définir certaines variables pour les attributs de document et le schéma de couleurs du calendrier. J'ai créé mon document 1280x800 à une résolution de 72 pixels / pouce, que j'ai nommé "PhotoshopScriptCalendar" et choisi 2010 comme année du calendrier que nous allons créer..
C'est la palette de couleurs de base que nous allons utiliser. "NormalColor" est pour les noms de semaine et de mois. Pour les dimanches, j'ai utilisé une couleur différente afin de les faire ressortir, il s'agit de "highlightColor", et nous utiliserons "backColor" comme couleur d'arrière-plan par défaut du calendrier si nous ne sélectionnons pas d'image personnalisée pour celle-ci..
Comme je l'ai déjà dit, nous allons principalement travailler avec la manipulation de texte. Nous devons donc définir des variables pour l'indentation et le texte que nous allons utiliser de manière répétée, comme les en-têtes de mois..
Afin de définir une couleur différente pour la colonne Sundays, nous devons en faire un calque de texte différent des autres jours. C'est pourquoi nous avons deux en-têtes: "monthHeader" - du lundi au samedi et "sundayHeader". Chacune de ces deux variables se termine par deux "\ r". Celles-ci représentent des caractères de nouvelle ligne, ce qui revient à appuyer sur la touche Retour de votre clavier. Ensuite, nous définissons la variable d'indentation. Notez que le premier janvier est un vendredi, donc pour chaque jour précédent, nous devons mettre un retrait au lieu de chiffres. Le nombre d'espaces de ces variables dépend de la police utilisée et de la taille de celle-ci. Il faudra donc un peu de traçage et d'erreur avant de réussir. Enfin, faites une liste de tous les noms de mois.
Maintenant que nous avons tout ce dont nous avons besoin, nous pouvons commencer à créer le document .psd.
Comme vous pouvez le constater, le code est assez lisible. À notre application Photoshop, nous ajoutons un nouveau document avec la largeur, la hauteur, la résolution et le nom spécifiés précédemment, un mode couleur, et nous conservons sa référence dans une nouvelle variable "doc". Par défaut, tous les nouveaux documents sont en RVB. Nous aurions donc pu omettre ce paramètre. Toutefois, si vous souhaitez utiliser le mode CMJN, par exemple, vous pouvez utiliser "NewDocumentMode.CMYK". La même chose avec LAB, GRAYSCALE et BITMAP. Vous pouvez trouver tous ces éléments dans les références ci-dessus..
Ensuite, nous faisons une nouvelle sélection et sélectionnons le document entier, le remplissons avec notre couleur d'arrière-plan et le désélectionnons.
Ensuite, nous devons ajouter un arrière-plan personnalisé à partir d'une image existante. Le fond dégradé du résultat final affiché ci-dessus est en fait une image distincte..
Pour cela, nous allons utiliser la fonction openDialog (). Cela ouvre la boîte de dialogue de "Fichier> Ouvrir" et place dans le tableau "fichier" la liste des images sélectionnées. Nous allons utiliser uniquement la première image sélectionnée qui se trouve dans le tableau "fichier" à la position 0. Nous devons donc d'abord vérifier si une image a été sélectionnée..
Ensuite, nous allons charger l’image sélectionnée dans notre application et obtenir une référence à celle-ci en appelant "app.activeDocument", qui renvoie le document actuellement actif dans Photoshop..
Redimensionnez l'image à la largeur et à la hauteur que vous préférez. Encore une fois, nous faisons une nouvelle sélection de tout le document, copions cette sélection et fermons le document avec la possibilité de ne pas enregistrer les modifications..
Enfin, dans notre document de calendrier, collez la sélection. Cela place l'image en tant que premier calque au-dessus du calque d'arrière-plan. Puis nommez-le quelque chose comme "BackgroundImage".
Notez que si aucune image n'était sélectionnée dans la boîte de dialogue, aucune de ces commandes n'aurait été exécutée..
D'ACCORD. Vient maintenant la génération actuelle du calendrier. Cela pourrait être un peu plus difficile, mais nous allons procéder étape par étape et espérons que ce ne sera pas si difficile à comprendre.
Nous devons faire un ensemble d’actions pour chaque mois de l’année. Pour cela, nous utilisons une boucle "pour". Fondamentalement, cela prend la variable "curr", que nous utilisons pour désigner le mois en cours avec lequel nous travaillons, définit sa valeur initiale sur 0, puis le jeu d'actions à plusieurs reprises, incrémentant la valeur de "curr" à chaque fois, jusqu'à ce que devient 12. Ainsi passant par tous les douze mois.
Nous devons d’abord définir deux variables que nous allons utiliser pour positionner nos mois dans le document sous forme de grille. Ceux-ci représentent les décalages X et Y de chaque mois. Nous allons mettre 4 mois sur une seule ligne, nous allons donc utiliser l'opération "%" pour le décalage X. Cela ramène le reste de la division de "curr" à 4. Ce décalage sera le même pour janvier, mai, septembre, pour février, juin, octobre, etc., pour chaque mois de la même colonne. Pour le décalage en Y, nous utilisons la fonction javascript "Math.floor ()" qui renvoie la valeur la plus grande, inférieure au résultat de division de "curr" sur 4. Ainsi, pour les mois de la même ligne, le décalage en Y est le même..
En fin de compte, nous voulons avoir les couches pour chaque mois dans un groupe séparé. Nous allons donc commencer par créer un groupe de couches et lui donner le nom du mois en cours. Nous utilisons ici la liste des mois que nous avons définie précédemment.
Ensuite, nous créons un nouveau calque de texte dans notre groupe et lui donnons le nom du mois en cours. Cela va être notre couche de noms de mois.
Nous devons maintenant définir les attributs du texte tels que la couleur du texte, la taille de la police et la justification. Nous allons définir le type de notre texte sur "PARAGRAPHTEXT" et donner à notre calque les dimensions préférées. L'attribut "contents" de la variable "monthName" représente le texte réel qui sera visible à l'intérieur du calque. Nous voulons donc qu'il s'agisse du nom du mois en cours..
Enfin, nous allons faire pivoter la couche de 90 ° dans le sens anti-horaire et la positionner. Ici, nous allons utiliser nos variables de décalage "x" et "y".
N'oubliez pas que le positionnement est effectué par rapport au coin supérieur gauche des couches, mais depuis que nous avons effectué une rotation à 90 ° vers la gauche, il est désormais devenu le coin inférieur gauche. Si votre document a des dimensions différentes des miennes, vous devrez peut-être modifier les constantes que j'ai utilisées pour le positionnement. Les valeurs que j'ai utilisées sont énumérées ci-dessous.
Nous allons ensuite créer le calque de texte qui contiendra toutes les dates du mois en cours, à l’exception des dimanches. Nous allons l'ajouter au groupe que nous avons créé précédemment et définir son nom, sa justification, sa couleur et sa taille de police, puis le positionner. Nous allons ajouter le contenu de ceci un peu plus tard, je vais expliquer pourquoi, quand nous en arriverons là.
Même chose pour la couche Sundays, mais cette fois, nous allons définir la couleur sur "highlightColor".
Maintenant, nous devons créer deux variables qui vont contenir notre texte au fur et à mesure que nous le générons, "text" contiendra les jours de la semaine et "textSun" les dimanches. Nous commençons par ajouter les en-têtes et mettre le retrait pour le premier du mois. Nous créons une nouvelle date avec la fonction javascript "Date ()" à partir de l'année de notre calendrier, du mois en cours et du premier jour de ce mois, et obtenons sa position dans la semaine. N'oubliez pas que la numérotation commence toujours à 0. Ainsi, par exemple, si le premier du mois est un lundi, "n" sera 0, s'il s'agit d'un mardi, "n" sera 1, etc. Ensuite, nous devons ajouter le retrait que nous avons défini au début à notre variable "text" autant de fois que nécessaire. Si le premier du mois est un mercredi par exemple, nous ajouterons le retrait deux fois..
D'ACCORD. Il est temps de générer tous les chiffres du mois. Pour cela, nous avons besoin de savoir combien de jours il y a dans notre mois en cours et nous avons besoin des nombres au format "zéros", nous devons donc revenir en arrière et définir deux fonctions personnalisées: "daysInMonth" et "makeDay". Alors s'il vous plaît faites défiler vers le haut de votre code et ajoutez ces fonctions. Comme je l'ai dit, la fonction "daysInMonth" renvoie le nombre de jours dans le mois que nous lui donnons, et "makeDay" renvoie le nombre que nous lui attribuons dans un format spécifique et ajoute des espaces, nécessaires pour espacer les jours du mois. Ainsi, par exemple, si nous appelons la fonction "daysInMonth" avec l'année = 2010 et le mois = 0 (janvier), le nombre 31 sera renvoyé. Si nous appelons la fonction "makeDay" avec, par exemple, d = 3, elle renverra le texte "03", mais si d = 13, il retournera "13". Notez que si "d" est inférieur à 10, il ajoutera un zéro avant.
Nous allons commencer à partir de d = 1 et l'incrémenter jusqu'à atteindre le nombre de jours du mois. Maintenant, si "i" a la valeur "6", cela signifie que c'est un dimanche, nous devons donc l'ajouter à la couche Sunday. N'oubliez pas de mettre un "\ r" ici pour la nouvelle ligne. Sinon, nous l'ajoutons aux jours de semaine. Ici, nous ajoutons une nouvelle ligne uniquement si le jour actuel est "Samedi" ("i" est "5"). À la fin, nous devons incrémenter "i" et "d", et si la valeur de "i" atteint "7", c'est-à-dire si le dernier jour ajouté était un dimanche, nous devons le "0" à nouveau.
Enfin, nous avons toutes les dates dans nos variables de texte et nous pouvons les ajouter à nos calques. La raison pour laquelle nous avons retardé cette étape est qu'il faut un certain temps pour que Photoshop ajoute du texte à un calque. Il est donc préférable de l'ajouter en une fois, plutôt que d'ajouter chaque jour séparément..
Ainsi, toutes les couches de mois sont maintenant générées et tout ce que nous avons à faire est de créer la couche d’année et cette petite ligne au bas. Pour le calque année, la procédure est identique à celle utilisée précédemment: créer un nouveau calque, lui attribuer un nom, la taille et la couleur du texte et le positionner à l'endroit souhaité..
Pour le résultat inférieur, c'est un peu différent. Nous devons d’abord définir une région avec les coordonnées X et Y pour les quatre coins, puis faire une sélection dans cette région, la remplir de notre couleur sur un nouveau calque et finalement la désélectionner..
Tout notre code est terminé! La seule chose à faire maintenant est de l'exécuter. Si vous utilisez ExtendScript Toolkit, sélectionnez "Adobe Photoshop" dans le menu déroulant. Si Photoshop n'est pas ouvert, cliquez sur la petite icône à gauche "Se connecter à l'application cible", puis appuyez sur l'icône de lecture. Si vous avez utilisé un autre éditeur de texte, enregistrez le fichier avec les extensions ".js" ou ".jsx" et exécutez-le à partir de Photoshop: Fichier> Scripts> Parcourir, puis sélectionnez votre fichier..
Nous avons finis! J'espère que vous avez aimé travailler sur ce petit projet. Les scripts dans Photoshop sont très utiles lorsque vous devez effectuer des actions répétitives et peuvent vous faciliter la tâche beaucoup plus facilement une fois que vous les maîtrisez. S'il vous plaît, n'hésitez pas à envoyer vos suggestions, elles sont toujours les bienvenues.!