Page 1 sur 1

[ASTUCE] Photoshop & Flash

Publié : 07 mai 2014 - 10:35
par BenjaminLSR
LA BOITE À OUTILS


1ER OUTIL: Macro photoshop

Cette macro au format javascript vous permet de générer des images photoshop par lots.
- Vous ouvrez votre psd.
- Vous disposez vos calques et objets comme d'habitude.
- Vous modifiez le code en fonction (aidez vous des commentaires).
- Vous disposez le script dans le même dossier que votre psd.
- Vous allez Fichier / Script / Parcourir.
- Vous sélectionnez le script.
- Vous attendez le message de confirmation :)

EXEMPLE: Obtenu après lecture du fichier Main Menu.xml
Image

// DES VARIABLES
var Path = app.activeDocument.path;
var AD = app.activeDocument;

// VARIABLE NOM DU DOCUMENT
// Utilisée pour déposer les fichiers générés dans le dossier du même nom
var ADname = AD.name.replace(".psd","");

// FONCTION CHANGETEXTBYLAYERNAME
// Utilisée pour remplacer le text du layer par le texte de votre choix
function changeTextByLayerName(layerName,newText){
   var layer = AD.layers.getByName(layerName);
   if(layer.kind == LayerKind.TEXT)
      layer.textItem.contents = newText;
}

// FONCTION CAPTEXT
// Utilisée pour limiter (ou non) la longueur d'une variable en la tronquant.
// On remplace les trois derniers caractères par ...
function capText(oldText,limit){
   var newText = "" + oldText;
   var newTextLength = newText.length;
   
   if(newTextLength limit)
      newText = newText.substr(newText,limit) + "...";
   
   return newText;
}

// CHANGEMENT DU NOM DU FICHIER XML
var monFICHIER = "MAME.xml";

var myXMLFile = new File(Path + "/" + monFICHIER);
myXMLFile.open('r');
var myXMLString = myXMLFile.read();
myXMLFile.close();

var myXml = new XML( myXMLString );
var mesJeux = myXml.descendants("game");

var count = mesJeux.length();

// C'EST ICI QUE CA CE PASSE !
for(var i=0;icount;i++){
   var game = {};
   
   // VOS VARIABLES DU JEU
   game.name = mesJeux.child(i).@name;
   game.index = mesJeux.child(i).@index;
   game.image = mesJeux.child(i).@image;
   game.desc = mesJeux.child(i)["description"];
   game.manu = mesJeux.child(i)["manufacturer"];
   game.year = mesJeux.child(i)["year"];
   game.genre = mesJeux.child(i)["genre"];
   game.rate = mesJeux.child(i)["rating"];

   // VOTRE CALQUE
   var monCALQUE = "Console2";
   changeTextByLayerName(monCALQUE,game.desc);
   
   // ON SAUVEGARDE LE FICHIER
   // dossier du psd / nom du psd / nom du jeu.png
   var saveFile = File(Path + "/" + ADname + "/" + game.name + ".png");
   pngSaveOptions = new PNGSaveOptions();
   AD.saveAs(saveFile, pngSaveOptions, true,Extension.LOWERCASE);   
}
alert("Bonne journée sur Hyperfreespin !");
Image

Re: [BOITE À OUTILS] Photoshop & Flash

Publié : 07 mai 2014 - 14:39
par stickcross
Merci, Benjamin.

Je vais regarder ce soir, par contre j'ai pas tout compris sur la forme du PSD et ce qu'il faut modifier dans le script.

Sorry, je suis une bille en codage

Re: [BOITE À OUTILS] Photoshop & Flash

Publié : 07 mai 2014 - 14:56
par BenjaminLSR
Tu peux prendre le PSD que tu veux.

Tu modifie le nom du fichier XML.
// CHANGEMENT DU NOM DU FICHIER XML
var monFICHIER = "MAME.xml";
Tu modifie le nom du calque qui contient ton texte.
// VOTRE CALQUE
   var monCALQUE = "Console2";
J'ai déjà isolé les variables d'un fichier XML standard.
  // VOS VARIABLES DU JEU
  game.name = mesJeux.child(i).@name;
  game.index = mesJeux.child(i).@index;
  game.image = mesJeux.child(i).@image;
  game.desc = mesJeux.child(i)["description"];
  game.manu = mesJeux.child(i)["manufacturer"];
  game.year = mesJeux.child(i)["year"];
  game.genre = mesJeux.child(i)["genre"];
  game.rate = mesJeux.child(i)["rating"];

[BOITE À OUTILS] Photoshop & Flash

Publié : 07 mai 2014 - 14:59
par slana54
Bonjour,

Un petit tuto pour expliquer comment ça marche serais bien non. Parce que moi je comprends pas.

Merci.

Re: [BOITE À OUTILS] Photoshop & Flash

Publié : 07 mai 2014 - 17:16
par stickcross
Je viens de test, mais j'ai un peut de mal.

Il faut créer un calque de type texte, sinon ça fait une erreur.

Ensuite ça fait à peut prêt le job mais à la fin j'ai ce message

Image

J'ai virer ce qu'il y avait dans le script entre parenthèse de cette ligne:
AD.saveAs(saveFile, pngSaveOptions, true,Extension.LOWERCASE);

Après cette suppression ça fait le job en boucle jusqu'au dernier jeux du XML mais aucun fichier généré. Je m'apperçoit aussi que le script ne prend que la description et pas le reste.

Surement à cause de ça:

// VOTRE CALQUE
var monCALQUE = "Calque1";
changeTextByLayerName(monCALQUE,game.desc);

Ne faut il pas plus de ligne de ce type en remplaçant game.desc par game.manu,
game.year, game.genre, game.rate ?


Re: [BOITE À OUTILS] Photoshop & Flash

Publié : 07 mai 2014 - 17:33
par BenjaminLSR
Pour ta première erreur, as tu bien crée un dossier du même nom que le psd ?
exemple ./Artwork1/ pour artwork1.js, artwork1.psd

ensuite...

Ne faut il pas plus de ligne de ce type en remplaçant game.desc par game.manu,
game.year, game.genre, game.rate ?Tu dois mettre autant de ligne que d'informations à récuperer dans le xml.

Re: [BOITE À OUTILS] Photoshop & Flash

Publié : 07 mai 2014 - 17:47
par stickcross
Non ça ne change rien, je suis sous Photoshop CS6 Extend, peut être ça qui va pas

Re: [BOITE À OUTILS] Photoshop & Flash

Publié : 07 mai 2014 - 18:49
par slana54
Non ça ne change rien, je suis sous Photoshop CS6 Extend, peut être ça qui va pas
Je pense qu'un petit tuto serais le bien venu.

Merci

Re: [BOITE À OUTILS] Photoshop & Flash

Publié : 07 mai 2014 - 19:06
par BenjaminLSR
Plus tard dans la soirée.

Re: [BOITE À OUTILS] Photoshop & Flash

Publié : 07 mai 2014 - 21:55
par Kam3léoN
Up ! pour un petit tuto
Et surtout pour expliqué l'intérêt de cet outil, parce-que moi perso qui utilise beaucoup Photoshop, j'ai pas compris l'intérêt surtout des scripts qui peuvent être gérer direct via Photoshop, petite précision, je suis sous la dernière version à savoir la CC (creative cloud)

La ou je pêche c'est le javascript en complément mais je suis sûr que tu vas réussir à m'éclairer avec un petit tuto. ^^
Dans tout les cas, je suis preneur si cela permets de gagner du temps.

Re: [BOITE À OUTILS] Photoshop & Flash

Publié : 07 mai 2014 - 22:34
par stickcross
Les scripts servent à faire des taches répétitive, quand tu as beaucoup d'image à faire c'est très intéressant car tu gagnes beaucoup de temps et tu évite les erreurs.

Pour mes Wheels j'utilise un script par exemple

Re: [BOITE À OUTILS] Photoshop & Flash

Publié : 07 mai 2014 - 22:42
par Kam3léoN
Les scripts servent à faire des taches répétitive, quand tu as beaucoup d'image à faire c'est très intéressant car tu gagnes beaucoup de temps et tu évite les erreurs.

Pour mes Wheels j'utilise un script par exemple
Oui ca ok sticky, mais tu le fais avec photoshop et là j'ai l'impression qu'il parle d'un logiciel externe à photoshop ! ^^ j'ai du mal comprendre.
Parce que via photoshop tu n'as besoin d'aucune ligne de code... comme tu le dit c'est la répétition d'une tache répétitive...
tu enregistre une manip avec photoshop qui génère un script et il recopie cette tache dans un dossier indéfiniment sur toute les images présente à l'intérieur.
je l'utilise très souvent également c'est la fonction automatisation traitement par lots ... donc pas besoin de logiciel externe...
c'est moi ou je suis un gros noob... avec toshop !^^

Re: [BOITE À OUTILS] Photoshop & Flash

Publié : 07 mai 2014 - 23:40
par stickcross
La c'est pareil mais comme il fait des choses beaucoup plus complexe, il passe par un fichier java et c'est lui même qui écrit le code.

La fonction script que tu utilise et moi aussi d'ailleurs (je suis pas aller aussi loin car j'en avait pas l'utilité avant) c'est photoshop qui écrit direct ces fichiers que l'on ne voit pas, photoshop facilite grandement la création de ces scripts, mais si tu fouilles dans ton répertoire photoshop tu les trouveras.

Re: [BOITE À OUTILS] Photoshop & Flash

Publié : 07 mai 2014 - 23:44
par Kam3léoN
La c'est pareil mais comme il fait des choses beaucoup plus complexe, il passe par un fichier java et c'est lui même qui écrit le code.

La fonction script que tu utilise et moi aussi d'ailleurs (je suis pas aller aussi loin car j'en avait pas l'utilité avant) c'est photoshop qui écrit direct ces fichiers que l'on ne voit pas, photoshop facilite grandement la création de ces scripts, mais si tu fouilles dans ton répertoire photoshop tu les trouveras.
A ok ! la c'est plus clair !
C'est donc la même chose en mode : j'aime bien mettre les mains dans le cambouis. ^^

Re: [BOITE À OUTILS] Photoshop & Flash

Publié : 08 mai 2014 - 08:25
par BenjaminLSR
Si tu arrive deja à traiter des fichiers externes type xml depuis photoshop alors ce script ne te servira à rien.
Je vais tacher de faire une démo et je mettrais le premier post à jours.

Vous devriez avoir quelque chose comme ça. (le script sur l'image est un peu différent pour mes besoins)
Image

Re: [BOITE À OUTILS] Photoshop & Flash

Publié : 08 mai 2014 - 13:17
par stickcross
:cheers:  

C'est bon ça fonctionne, il me manqué juste le dossier du même nom que le script placé au même niveau. J'avais compris qu'il fallait nommer le dossier parent de la même façon.

Avec ton screenshot j'ai compris.

Un grand merci à toi ça fonctionne du tonner.

Re: [BOITE À OUTILS] Photoshop & Flash

Publié : 08 mai 2014 - 13:48
par BenjaminLSR
:cheers:  

C'est bon ça fonctionne, il me manqué juste le dossier du même nom que le script placé au même niveau. J'avais compris qu'il fallait nommer le dossier parent de la même façon.

Avec ton screenshot j'ai compris.

Un grand merci à toi ça fonctionne du tonner.
Hesite pas à montrer ton travail avec :)

Re: [BOITE À OUTILS] Photoshop & Flash

Publié : 08 mai 2014 - 16:49
par stickcross
Voila ce que ça donnes   8)  



Benjamin tu tombe à pique et encore merci pour ce script car il me fait gagner énormément de temps.


Re: [BOITE À OUTILS] Photoshop & Flash

Publié : 08 mai 2014 - 16:53
par BenjaminLSR
Ah c'est pas mal du tout :)

Re: [BOITE À OUTILS] Photoshop & Flash

Publié : 08 mai 2014 - 17:21
par DarkEagle37
Ça péte pas mal :D