Bonjour,
J'ai acheté un cadre numérique.
Je souhaite pouvoir insérer automatiquement le nom du fichier dans la photo
(environs 1000 photos)
Quequ'un connait-il un moyen ?
Merci
Bonjour,
J'ai acheté un cadre numérique.
Je souhaite pouvoir insérer automatiquement le nom du fichier dans la photo
(environs 1000 photos)
Quequ'un connait-il un moyen ?
Merci
Bonjour as_44
avec un javascript sous photoshop oui je connais un moyen.
Voila le code - je viens de l arranger et je peux le faire avec un cadre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 // nomImage.jsx //permet d ecrire le nom de l image en bas a gauche var docRef = activeDocument //A MODIFIER pour positionner var posHoriz = activeDocument.width*(2/100); //je donne un pourcentage de la taille du document var posVertic = activeDocument.height*(98/100); //pour la position du texte Opacite = 100 ; // reglage de la transparence du calque texte ( de 0 a 100 ) //A MODIFIER pour la taille du texte TailleFonte = activeDocument.height*(2/100); fontPostScriptName = "ParkAvenueBT-Regular" //NomPolice = "ParkAvenue BT" app.displayDialogs = DialogModes.NO; var strtRulerUnits = preferences.rulerUnits app.preferences.typeUnits = TypeUnits.POINTS; var textColor = new SolidColor; //A MODIFIER pour la couleur du texte textColor.rgb.red = 201; textColor.rgb.green = 70; textColor.rgb.blue = 70; textColor.opacity = 90; //+++++++++++++++++++++++++++++++++++++++++++++++++++++++ //monNom = docRef.name; // on peut mettre aussi son nom : + " Moi" monNom =noneExtension(docRef.name); //Si l on veut le nom du document sans l extension //+++++++++++++++++++++++++++++++++++++++++++++++++++++++ var newTextLayer = docRef.artLayers.add(); newTextLayer.kind = LayerKind.TEXT; newTextLayer.textItem.contents = monNom; newTextLayer.textItem.position = Array(posHoriz, posVertic); newTextLayer.textItem.postScriptName = fontPostScriptName; //newTextLayer.textItem.name = NomPolice; newTextLayer.textItem.size = TailleFonte; newTextLayer.textItem.color = textColor; newTextLayer.opacity = Opacite; docRef.flatten(); //aplatir function noneExtension( fileName ) { var Point = fileName.charAt(fileName.length-4); if ( Point == "." ) { fileName = fileName.substring( 0, fileName.length-4); } return fileName; }![]()
De rien ......
J en ai d autres - pas toujours tres propres mais qui me servent beaucoup - a disposition mais comme cela concerne plutot la photo je les voies bien dans la section " Imagerie " ?
Merci,
j'ai bien Photoshop mais je n'ai encore jamais utilisé de scripts
j'avais bien vu avec l'option Picture Package qu'on pouvait ajouter le nom mais le souci était que l'image était multipliée par 2, 3 ,4 ...
je n'ai pas voulu écraser les layout prédéfinis, et je n'ai pas vu comment en créer un
je vais donc regarder dans l'aide cimment utiliser un script
Merci encore
je donnerai le mode d'emploi quand j'aurai réussi
J ai fait un tuto tres detaille pour utiliser les scripts .atn et .jsx sur photoshop .
C est ICI.
![]()
Merci pour l'info sur les jsx
j'ai exécuté l'exemple (légèrement modifié pour avoir des caractères plus gros et en noir)
le souci est qu'ensuite je ne peux pas sauvegarder l'image en .JPG
seuls .tiff, .psd, .psb, .pdf et que le cadre numérique que j'ai acheté ne lit pas les .tiff
en fait je suis allé dans File / Scripts / Scripts Events Manager / Photos Events = Open Document et j'ai associé le script d'ajout du nom de fichier donné en exemple
Pour les 100 photos à traiter, je n'ai pas bien compris dans le tuto sur ATN/JSX la séquence à exécuter pour le traitement par lot
comment l'ouverture et la fermeture des fichiers dans un répertoire/sous-répertoire va-t-elle se faire ? faut-il rajouter l'ouverture et la sauvegarde dans le jsx ? si oui, le code complet m'arrangerait bien (je ne connais pas le javascript)
j'ai la version 9.0 anglaise de photoshop
j'ai téléchargé la version d'essai cs4 en français sur un autre PC
Merci d'avance pour les réponses
Un code pour enregistrer en jpg a rajouter a la fin du script precedent :
Pour le chemin j ai prefere l ecrire entierement et tu mets ton nom d USER a la place du mien ( "moi" ).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 // Changer l adresse de sauvetage de l image ( "C:/Documents and Settings/moi/Mes documents/Mes images/" ) //Mettez votre nom d USER a la place du mien ( " moi " ) //Creation d un dossier Z_TRAITEMENT_ENREGISTRER dans le dossier "Mes images" myFile1 = "C:/Documents and Settings/moi/Mes documents/Mes images/" Z_TRAITEMENT_ENREGISTRER = new Folder(myFile1 +"/Z_TRAITEMENT_ENREGISTRER"); Z_TRAITEMENT_ENREGISTRER.create(); myFile = new File(myFile1 + "/Z_TRAITEMENT_ENREGISTRER"); FermEnreg() function FermEnreg() { var docRef = activeDocument; // par precaution ( rajout de code ) Nom = docRef.name; // save the outputs in JPEG var jpegOptions = new JPEGSaveOptions() // set the jpeg quality really low so the files are small jpegOptions.quality = 12 // go to 8 bit because we are saving to JPEG docRef.bitsPerChannel = BitsPerChannelType.EIGHT // Sauver le document docRef.saveAs(new File(myFile + "/" + Nom ), jpegOptions) // "/Output" + ".jpg"), jpegOptions) //Fermer le document ( celui d origine ) app.activeDocument.close() }
Ce script te cree un sous dossier "Z_TRAITEMENT_ENREGISTRER" dans ton dossier personnel "Mes images" - tu peux changer l adresse en respectant les /
J ai prefere ecrire le chemin complet plutot qu un %home% car CS4 te modifie les chemins et tu retrouves tes images dans ces eaux la : "C:\Documents and Settings\moi\Application Data\Adobe\Adobe Photoshop CS4\...... " alors que tu les veux dans "Mes Documents".
Pour l ouverture des fichiers j ai deux sortes de script : avec une boite de dialogue ( perte de temps a mon avis ) ou bien a partir d un dossier predefini ou tu installes tes images
Je prefere utiliser le traitement par lots en general.
Désolé mais je n'y arrive pas
j'ai rajouté le deuxième script à la fin du premier en remplaçant "moi" par mon nom mais lorsque j'ouvre un fichier cela ne l'enregistre pas (le première étape d'ajout du nom est toujours ok)
toujours en utilisant scripts events (open document avec le fichier contenant les 2 scripts)
d'autre part je croyais qu'en utilisant traitement par lot, et en sélectionnant folder , cela ouvrait automatiquement les fichiers et par conséquent, avec le script event cela devait le faire
si tu as encore un peu de temps à consacrer pour détailler de bout en bout comment à partir d'un répertoire x , ouvrir tous les jpg (y compris ceux dans les sous-répertoires)
, exécuter le script d'ajout du nom de fichier puis le script d'enregistrement en format jpg dans un répertoire y (en respectant les sous-répertoires)
Merci d'avance
Il ne faut pas utiliser script event ( Le gestionnaire d evenement de script cree une action eventuelle a l ouverture de photoshop ou celle d un document - une ouverure plein ecran une boite de dialogue avec "bonjour" .... sans interet ici )
image 4/ c est sans doute en dessous de " / Scripts / Scripts Events Manager /..." et cela permet de parcourir et saisir le fichier !
Je crois qu en anglais c est dans "Preset/ Scripts / " qu il faut le mettre.
Pour le traitement par lots tu choisis bien folder et ensuite "Selectionner" pour indiquer a photoshop le dossier precis ou sont les images.
c'est bon, cà fonctionne en traitement parr lot avec un seul jsx pour les 2actions (ajout du nom et enregistrement en jpg)
seul hic, c'est que tout va dans le même dossier, si tu peux me donner le code pour conserver le nom des répertoires et sous-répertoires
le fichier de sortie est également plus grand, mais j'utiliserai 2 cartes SD pour le cadre numérique
Merci encore
Pour le poids des fichiers ( ce que tu nommes la taille ) il suffit de jouer sur " jpegOptions.quality = 12 " a la ligne 25 - tu diminue de 12 a 1 et le poids diminue mais la qualite s en ressent ( pas grave pour un cadre numerique ).
Avec ce code qui reprend le premier sous forme de fonctions situees a la fin tu n as pas besoin du " Traitement par lots " :
tu lances le script qui ouvre des boites de dialogue pour te demander le dossier d origine puis le dossier de destination.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154 // nomImageDialogue.jsx //permet d ecrire le nom de l image en bas a gauche //Pour faire une recherche de ce qui est modifiable chercher le terme " MODIFIER " //Declaration de preferences pour photoshop //Celles d origine app.displayDialogs = DialogModes.NO; startRulerUnits = app.preferences.rulerUnits startTypeUnits = app.preferences.typeUnits startDisplayDialogs = app.displayDialogs //Celles du script app.displayDialogs = DialogModes.NO; var strtRulerUnits = preferences.rulerUnits app.preferences.typeUnits = TypeUnits.POINTS; //Ouvrir les images et appeler les fonctions de travail OpenFolder(); function OpenFolder(inputFolder) { // boite de dialogue : inputFolder = Folder.selectDialog("Selectionner le dossier ou sont les IMAGES A TRAITER ") outputFolder = Folder.selectDialog("Selectionner le dossier d EXPORTATION DES IMAGES ") filesOpened = 0; fileList = inputFolder.getFiles(); for ( i = 0; i < fileList.length; ) { open( fileList[i] ); docRef = activeDocument; ecrireNom() FermEnreg() i++ } return filesOpened; } //++++++++++++++++++++++++++++ LES FONCTIONS de transformation ++++++++++++++++++++++++ function ecrireNom() { docRef = activeDocument //A MODIFIER pour positionner var posHoriz = activeDocument.width*(2/100); //je donne un pourcentage de la taille du document var posVertic = activeDocument.height*(98/100); //pour la position du texte Opacite = 100 ; // reglage de la transparence du calque texte ( de 0 a 100 ) //A MODIFIER pour la taille du texte TailleFonte = activeDocument.height*(2/100); fontPostScriptName = "ParkAvenueBT-Regular" //NomPolice = "ParkAvenue BT" var textColor = new SolidColor; //A MODIFIER pour la couleur du texte textColor.rgb.red = 201; textColor.rgb.green = 70; textColor.rgb.blue = 70; textColor.opacity = 90; //A MODIFIER //monNom = docRef.name; // on peut mettre aussi son nom : + " son propre nom" monNom =noneExtension(docRef.name); //Si l on veut le nom du document sans l extension var newTextLayer = docRef.artLayers.add(); newTextLayer.kind = LayerKind.TEXT; newTextLayer.textItem.contents = monNom; newTextLayer.textItem.position = Array(posHoriz, posVertic); newTextLayer.textItem.postScriptName = fontPostScriptName; //newTextLayer.textItem.name = NomPolice; newTextLayer.textItem.size = TailleFonte; newTextLayer.textItem.color = textColor; newTextLayer.opacity = Opacite; docRef.flatten(); //aplatir } function noneExtension( fileName ) { var Point = fileName.charAt(fileName.length-4); if ( Point == "." ) { fileName = fileName.substring( 0, fileName.length-4); } return fileName; } function FermEnreg() { var docRef = activeDocument; // par precaution ( rajout de code ) Nom = docRef.name; // Enregistrer en JPEG var jpegOptions = new JPEGSaveOptions() // Poids de l image jpegOptions.quality = 10 //A MODIFIER pour diminuer le poids de l image ( de 12 a 1 ) // Passer en 8 bits docRef.bitsPerChannel = BitsPerChannelType.EIGHT // Sauver le document docRef.saveAs(new File(outputFolder + "/" + Nom ), jpegOptions) // "/Output" + ".jpg"), jpegOptions) //Fermer le document ( celui d origine ) app.activeDocument.close() } //Restaure les preferences d origine de photoshop app.preferences.rulerunits = startRulerUnits app.preferences.typeunits = startTypeUnits app.displayDialogs = startDisplayDialogs
Bonsoir,
je viens d'essayer la nouvelle version
j'ai eu un message d'erreur :
"Erro 1233: Expected a reference to an existing File/Folder
Line 38
-> Open(fileList((i) );
OK
Ceci après avoir sélectionné les dossiers sources et destination
J'en ai déduit qu'il fallait sélectionner un dossier contenant des fichiers en pas un dossier contenant des sous-dossiers etç ca fonctionne
Donc un grand merci à toi
La personne à qui le cadre est destiné est assez agée et je voulais qu'elle utilise le diaporama sans avoir à manipuler la télécommande pour visualiser les fichiers
les photos sont des photos de chiens prise lors d'expositions et il y a donc le nom du chien dans le nom du fichier
Un dernier conseil si tu veux bien, quelle doc pour photoshop et javascript ?
La plus part des doc sont en anglais ...... et il faut un peu chercher.
Tu peux deja aller voir ici dans CS4 "C:\Program Files\Adobe\Adobe Photoshop CS4\Documents de script "
Et utiliser l ecouteur de scripts ( ScriptingListenerJS.log ) : Guide des scripts Photoshop/Gestionnaire de scripts/Module externe Ecouteur de scripts.
J en possede un petit paquet mais pas tous tres utiles cela depend de ce que tu veux realiser.....
Je viens de finir de realiser un genre de tuto pour debutants en javascript photoshop avec quelques exemples sur ce LIEN
![]()
Partager