Bonjour à tous. Savez vous s'il est possible de créer un script qui ecrirait sur la photo ses exifs? D'avance merci. Nicolas
Version imprimable
Bonjour à tous. Savez vous s'il est possible de créer un script qui ecrirait sur la photo ses exifs? D'avance merci. Nicolas
Bonjour nikkko
Oui avec des javascripts.
J ai prepare celui ci pour CS4 :
Tu le copies dans un fichier texte dont tu changes l extension en .jsx puis tu le colles dans le dossier Scripts de Photoshop. Ensuite tu crees un script .atn et tu vas le chercher dans Fichiers/Scripts/Parcourir... ( avec une image ouverte ).Code:app.displayDialogs = DialogModes.NO;
//app.preferences.typeUnits = TypeUnits.POINTS;
var strtRulerUnits = preferences.rulerUnits
preferences.rulerUnits = Units.PIXELS
var docRef = activeDocument;
AD = activeDocument;
NomImage = noneExtension( AD.name )
monNom = ""; // mettre votre Nom a la place ou bien ""
NomPolice = "ParkAvenue BT"
//Les EXIFS
//Pour changer la position du texte il faut modifier les pourcentages hauteur et largeur
var posHoriz = activeDocument.width*(2/100); //je donne un pourcentage de la taille du document
var posVertic = activeDocument.height*(997/1000); //pour la position du texte = a modifier
Opacite = 100; // reglage de la transparence du calque texte ( de 0 a 100 )
TailleFonte = activeDocument.width*(1.7/100);
//le reglage des couleurs des exifs
Rouge = 125;
Vert = 45;
Bleu = 10
InfoExif() //lire Les Exifs
RedacTexte() //ecrire Les Exifs
docRef.flatten(); //aplatir
function RedacTexte()
{
var textColor = new SolidColor;
textColor.rgb.red = Rouge;
textColor.rgb.green = Vert;
textColor.rgb.blue = Bleu;
textColor.opacity = 10;
var newTextLayer = docRef.artLayers.add();
newTextLayer.kind = LayerKind.TEXT;
newTextLayer.textItem.contents = LesExifs;
newTextLayer.textItem.position = Array(posHoriz, posVertic);
newTextLayer.textItem.size = TailleFonte;
newTextLayer.textItem.color = textColor;
newTextLayer.textItem.font = NomPolice
newTextLayer.opacity = Opacite;
}
function InfoExif()
{
// EXIF info
LesExifs= monNom;
var e = 8; //Nom du proprietaire
try {
LesExifs =LesExifs + " " + AD.info.exif[e][1]; //LesExifs + AD.info.exif[e][0] + " = " + AD.info.exif[e][1] + "\r";
}
catch (e) {}
var e = 1; //Modele de l appareil
try {
LesExifs =LesExifs + " " + AD.info.exif[e][1]; //LesExifs + AD.info.exif[e][0] + " = " + AD.info.exif[e][1] + "\r";
}
catch (e) {}
var e = 10; //Vitesse
try {
LesExifs = LesExifs + " " + AD.info.exif[e][1]; //LesExifs + AD.info.exif[e][0] + " = " + AD.info.exif[e][1] + "\r";
}
catch (e) {}
var e = 11; //Ouverture
try {
LesExifs = LesExifs + " " + AD.info.exif[e][1]; //LesExifs + AD.info.exif[e][0] + " = " + AD.info.exif[e][1] + "\r";
}
catch (e) {}
var e = 12; //Iso
try {
LesExifs = LesExifs + " ISO" + AD.info.exif[e][1]; //LesExifs + AD.info.exif[e][0] + " = " + AD.info.exif[e][1] + "\r";
}
catch (e) {}
var e = 20; //Distance focale
try {
LesExifs = LesExifs + " " + AD.info.exif[e][1]; //LesExifs + AD.info.exif[e][0] + " = " + AD.info.exif[e][1] + "\r";
}
catch (e) {}
var e = 14; //Date
try {
LesExifs = LesExifs + " " + AD.info.exif[e][1];// + " " + NomImage; //LesExifs + AD.info.exif[e][0] + " = " + AD.info.exif[e][1] + "\r";
}
catch (e) {}
}
function noneExtension( fileName )
{
var Point = fileName.charAt(fileName.length-4);
if ( Point == "." )
{
fileName = fileName.substring( 0, fileName.length-4);
}
return fileName;
}
Pour les differentes versions de CS il faut chercher le bon chiffre pour la variable e dans les parties:
var e= 10; //VitesseCode:
var e = 8; //Nom du proprietaire
try {
LesExifs =LesExifs + " " + AD.info.exif[e][1]; //LesExifs + AD.info.exif[e][0] + " = " + AD.info.exif[e][1] + "\r";
}
catch (e) {}
.........................
Remarque : tu peux supprimer une de ces parties si elle ne t interesse pas ou bien en rajouter !
Pour trouver la valeur de cette variable e utilises le script suivant :
Tu comptes les lignes d information en partant de 0 pour la premiere puis tu modifies les valeurs des e.Code:savedUnits=app.preferences.rulerUnits;
var thisDoc=app.activeDocument;
app.preferences.rulerUnits=Units.PIXELS;
// EXIF info
var exif_info="";
for (var e = 0; e < thisDoc.info.exif.length; e++){
try {
exif_info = exif_info + thisDoc.info.exif[e][0] + " = " + thisDoc.info.exif[e][1] + "\r";
}
catch (e) {}
}
// alert(thisDoc.info.exif);
text_layer=thisDoc.artLayers.add();
text_layer.kind = LayerKind.TEXT;
textColor = new SolidColor;
textColor.rgb.red = 0;
textColor.rgb.green = 0;
textColor.rgb.blue = 0;
text_layer.textItem.color = textColor;
text_layer.textItem.kind=TextType.PARAGRAPHTEXT;
text_layer.textItem.position = Array(thisDoc.width * 0.05, thisDoc.height * 0.05);
text_layer.textItem.size = 18; //a la place de 4
text_layer.textItem.font = "ArialMT";
text_layer.textItem.width = thisDoc.width * 0.8
text_layer.textItem.height = thisDoc.height * 0.8
text_layer.textItem.contents=exif_info;
// restore preferences
app.preferences.rulerUnits=savedUnits;
:blink::
Alors là, c'est précis.
bravo :thumbup::
Merci a toi piercin ! :)
L habitude des modifications en fonction des versions..........
:blink::
Salut Béo
j'essayerai ça dès que possible même si je ne suis pas sûr d'avoir tout compris :blink:::blink::
Merci en tout cas !
bon me voilà de retour.
J'ai réussi plus ou moins
Quelques questions :
1) je n'arrive pas à changer la police utilisée, pourtant je change la ligne NomPolice = "Segoe Script" mais ça ne change rien
2) tu écris que pour trouver la valeur de la variable e il faut utiliser le dernier code que tu as mis. Que dois je faire ? (ecrire un text avec le code, et ensuite qu'en fais je?)
d'avance merci
Nico
Tu copies ce deuxieme script dans un fichier texte dont tu changes l extension en .jsx - par exemple InfoExif.jsx - puis tu le lances dans photoshop sur une image ouverte et les lignes des exifs vont s afficher dans l image ( vers le haut a gauche ) . tu comptes les lignes pour e en commencant par zero.
Un autre fichier jsx - listePolice.jsx - pour savoir comment ecrire le nom de la police dans les jsx - par exemple =Arial= doit s ecrire =ArialMT= ( j ai mis la le signe = comme dans le fichier texte qui va etre produit par le scipt a la place de " pour delimiter les espaces vides eventuels.
Tu copies le nom de la police PostScript situe entre les 2 signes =
Ce fichier listePolice.jsx qui cree un fichier texte listePolice.txt la ou tu le desires :
Code://listePolices.jsx
// Ask user for output folder
var inputFolder = Folder.selectDialog("Choisissez un dossier pour y créer la liste des polices");
//Create the Excel comma delimited file in the selected folder
var nufile = new File(inputFolder + "/" + "ListePolices.txt" );
nufile.open("w");
nufile.write("Nom Photoshop, Nom PostScript" + "\n"+ "\n");
for (var i = 0 ; i <=app.fonts.length-1 ; i++)
{
nufile.write( app.fonts[i].name + " : =" + app.fonts[i].postScriptName +"=" + "\n");
}
//Close the Excel comma delimited file
nufile.close();
alert("La liste des fichiers a été créée sous le nom de ListePolices.txt");
:blink::