Sebrr600 et Mac64 j ai ce que vous cherchez sur ce lien !
https://www.eos-numerique.com/forums...-photos-63988/
:blink:
Version imprimable
Sebrr600 et Mac64 j ai ce que vous cherchez sur ce lien !
https://www.eos-numerique.com/forums...-photos-63988/
:blink:
Un detail suite a une question posee par MP - pour changer la taille de la police il suffit de changer la valeur de la variable TxtSize :
var TxtSize = 16; // Taille du texte
:blink:
Hum
J'ai un petit souci avec les scripts qui donnent les exifs.
Si je les utilise sur des JPG sortis de l'appareil photo (après un passage sur toshop pour que ça affiche les bonnes valeurs) pas de soucis
Par contre, si j'ai pris un Raw avec l'appareil, que je le bidouille dans Camera Raw et que j'enregistre un JPG dans Photoshop, la les scripts n'ont plus l'air de marcher. Le texte n'apparaît pas du tout a la bonne taille, les infos ne sont pas les bonnes.....
Est ce que quelqu'un peut tester pour voir si ça lui fait le même effet? (sur le script exifs encadrés en noir par exemple)
As tu reutilise ce script pour connatre la numero des info ?
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:
C'est bon j'ai résolu pour les exifs qui n'étaient pas les bons...
Et pour la taille qui n'était plus respectée en fait cela venait de la résolution, par défaut elle était a 240 alors que les jpg tirés de l'appareil étaient en 72...donc forcément le texte était 4 fois plus gros
J'ai réglé ça dans cameraraw en espérant que ça conserve le réglage pour tous les fichiers
Par contre c'est vraiment con que photoshop ne garde pas les mêmes exifs aux mêmes endroits pour tous les types de fichiers...
Interessant, bravo
Up
Cela fait quelques mois que je travaillais sur ce thème, mais avec une approche un peu différente, plus "réutilisable" si j'ose dire :D
=> Insertion E.X.I.F et I.P.T.C avec Photoshop
(à noter une MAJ prévue dans les jours qui viennent de manière à ce que mes scripts soient compatibles CS2 et CS3 ; actuellement j'ai plusieurs scripts selon la version)
Bienvenue sur ce post .
J ai deja telecharge ton travail - elegant ! :blink:
Toujours sympa Cédric de faire partager tes connaissances !
bonsoir !
tres interessant comme post , mais j'ai pas compris grand chose .
comment faire exactement pour pouvoir utiliser les scripts et les enregistrer sous photoshop .
merci de votre aide .
BONJOUR !
ou sont ils ?Citation:
Tu télécharges les .jsx
lequel code ? , ensuite le fichier texte , un bloc note fera t'il l'affaire ?Citation:
tu colles le code dans un fichier texte que tu renome en .jsx
comment renome en jsx?
MERCI POUR VOS REPONSES .
bonjour !
j'ai enregistre le code sur un bloc note , mais comment je fait pour changer le
fichier .
Soit tu le nommes nom.jsx soit tu l enregistres en nom.txt puis tu modifies l extension en le renommant ( windows te demandera si tu veux vraiment modifier l extension au risque de rendre le fichier inutilisable - la pas de probleme - et tu reponds oui ! ). :blink:
Bonjour à tous.
Autant vous le dire tout de suite...je suis une m....en programation et pourtant j'en ai fait mes études.
Bref passons ma vie qui n'interesse personne.
Je me tourne vers vous aujourd'hui car je dois faire un travail qui consiste à:
Ecrire un scripte qui ouvre toutes les photos d'un dossier.
Mettre une bande de couleur en bas sur laquelle sont inscrites les données EXIF (vitesse,ouverture,longueur focale et balance des blancs. +sauvegarde de la photo)
J'ia parcouru tous le sujet du forum et rien ne fonctionne chez moi. (window XP, CS2)
Ayez pitié d'un pauvre nul :)
Merci d'avance
Pour scripter tout ou partie de ce genre de chose, j'ai quelque peu arrangé à ma sauce le bazar (déformation professionnelle :D)
=> intégrer simplement les E.X.I.F dans des scripts sous Photoshop
Bienvenue sur EOS numerique ! :blink:
Bonsoir,
J'ai téléchargé celui-ci:
var DocActif = activeDocument; // Document actif (image ouverte au premier plan)
var exifData = DocActif.info.exif.toString()
var exifArray = explodeArray(exifData,",")
///////////////////////////////////////////////////////////////////////////////
// Function: explodeArray (credit: Joe Colson)
// Usage: creates array of strings from argument item using delimiter as index
// Input: string item, delimiter
// Return: tempArray, an array of strings from string argument item
///////////////////////////////////////////////////////////////////////////////
function explodeArray(item, delimiter) {
tempArray = new Array()
var Count = 0
var tempString = new String(item)
while (tempString.indexOf(delimiter) > -1) {
tempArray[Count] = tempString.substr(0,tempString.indexOf(delimiter))
tempString = tempString.substr(tempString.indexOf(delimiter) + 1,
tempString.length - tempString.indexOf(delimiter) + 1)
Count = Count + 1
}
return tempArray
} // End explodeArray
///////////////////////////////////////////////////////////////////////////////
// Function: getArrayString (credit: Joe Colson)
// Usage: searches for string searchString
// Input: inputArray, searchString
// Return: string following "searchString" in array inputArray
///////////////////////////////////////////////////////////////////////////////
function getArrayString(inputArray,searchString) {
for(n = 0; n < inputArray.length; n = n + 1 ) {
if(inputArray[n] == searchString) {
return inputArray[n + 1]
}
}
} // End getArrayString
try
{
// Définition d'une variable définissant une couleur blanche, que nous utiliseront plus loin
var colorBlanc = new SolidColor();
colorBlanc.rgb.red = 255;
colorBlanc.rgb.blue = 255;
colorBlanc.rgb.green = 255;
// On crée un nouveau calque texte
var oLayer = DocActif.artLayers.add();
oLayer.kind = LayerKind.TEXT; // Type de calque = calque de texte
oLayer.name = "Nom du calque"; // Nom du calque
var oTextItem = oLayer.textItem; // On définit une variable qui permettra de simplifier les accès au calque de texte créé
oTextItem.font = "Arial"; // Définition de la police
oTextItem.size = 16; // Définition de la taille de police
oTextItem.color = colorBlanc; // Définition de la couleur du texte
////////////////////////////////////////////////////////////////////////////
////////// ZONE MODIFIABLE (insertion de votre texte)
////////////////////////////////////////////////////////////////////////////
//////////
// Lecture des informations EXIF contenues dans l'image
var exitTempsExpo = getArrayString(exifArray, "Exposure Time");
var exifAPN = getArrayString(exifArray, "Model");
var exifOuverture = getArrayString(exifArray, "F-Stop");
var exifISO = getArrayString(exifArray, "ISO Speed Ratings");
var exifFocale = getArrayString(exifArray, "Focal Length");
var exifCorrection = getArrayString(exifArray, "Exposure Bias Value");
if(exifCorrection!="0.0")
{ exifCorrection=", " + exifCorrection + " EV"; }
else
{ exifCorrection=""; }
// Pour créer un retour à la ligne (parfois utile) insérer "\u000D"
// Insertion du modèle d'appareil, d'un saut de ligne suivi des EXIFs
oTextItem.contents = exifAPN + "\u000D" + exifFocale.replace(".0 ","") + ", " + exifOuverture + ", " + exitTempsExpo.replace(" sec", "") + "ème, " + exifISO + " ISO" + exifCorrection; // Contenu du texte
}
} // End getArrayString
//////////
//////////
////////////////////////////////////////////////////////////////////////////
Mais il ne fonctionne pas.
Y a t'il quelqu'un qui pourrait le vérifier, et le corriger?
Merci de vôtre aide.
Tu supprimes la derniere accolade ( } ) ?
Et tu rajoutes apres :
catch(oErreur)
{
// Une erreur est survenue...
alert( "Une erreur est survenue : " + oErreur.description)
}
Mais tes references aux objets exifs ( "Exposure Time" etc ... ) risquent d etre fausses et de ressortir comme " undefined " !
:blink:
Merci de ton aide.
Mais j'ai oublié une petite précision, je suis un peu une bille en programmation.
1 la dernière accolade?
2 Mes références, quelles références?
Finalement je suis parvenu à télécharger un fichier avec un script qui fonctionne.
Par contre il m'affiche les infos en plein centre de l'image.
C'est un peu gênant.
Comment tout insérer en bas ou haut de page?
Merci.
C'est bon j'ai réussi par trouver.
Merci.
Excuses moi Hitman_11 je n ai pas ete avise de tes reponses .....???:rolleyes:
Bonjour à tous,
j'ai réglé pour ma part le problème.
En fait les exifs issus des fichiers Jpg que ce soit brut de capteur, réalisés avec DPP, Camera Raw (CS3), ou encore DXO ne sont pas placés aux mêmes endroits. Ce qui m'a ammené à créer 4 fichiers jsx différents, un pour chaque cas.
J'ai donc repris le fichier de base sous le notepad windows de ? (désolé, mais vu la longueur du post, je ne m'en souviens plus) puis je l'ai renommé en .jsx pour chacun des programmes que j'utilise.
Exifs Jpg sortis du boitier (PDV en JPG)
#target photoshop
app.bringToFront();
var thisDoc=app.activeDocument;
// Pas de questions pendant le script
displayDialogs = DialogModes.NO;
// On sauvegarde et met en place les unitÈs de mesure
var defaultRulerUnits = preferences.rulerUnits;
preferences.rulerUnits = Units.PIXELS;
var defaultTypeUnits = preferences.typeUnits;
preferences.typeUnits = TypeUnits.PIXELS;
// Quelques variables fort utiles pour la suite
var AD = activeDocument;
var black = new SolidColor();
black.rgb.red = black.rgb.green = black.rgb.blue = 0;
var white = new SolidColor();
white.rgb.red = white.rgb.green = white.rgb.blue = 255;
backgroundColor = black;
// Récupération des Exifs
var exif_info="Canon EOS 20D"; // Changer le modele si besoin...
// Vitesse
var e = 16;
try {
exif_info = exif_info + " - " + thisDoc.info.exif[e][1]; //exif_info + thisDoc.info.exif[e][0] + " = " + thisDoc.info.exif[e][1] + "\r";
}
catch (e) {}
// Ouverture
var e = 10;
try {
exif_info = exif_info + " - " + thisDoc.info.exif[e][1]; //exif_info + thisDoc.info.exif[e][0] + " = " + thisDoc.info.exif[e][1] + "\r";
}
catch (e) {}
// Isos
var e = 12;
try {
exif_info = exif_info + " - " + thisDoc.info.exif[e][1] + " iso"; //exif_info + thisDoc.info.exif[e][0] + " = " + thisDoc.info.exif[e][1] + "\r";
}
catch (e) {}
// Distance focale
var e = 21;
try {
exif_info = exif_info + " - " + thisDoc.info.exif[e][1]; //exif_info + thisDoc.info.exif[e][0] + " = " + thisDoc.info.exif[e][1] + "\r";
}
catch (e) {}
// Reglage des distances
var Off7 = 6; // Distance entre le texte et le cadre
var Undent = 4; // Distance entre le cadre et le bord de la photo
var TxtSize = 64; // Taille du texte
// On crÈe un nouveau calque texte
var infoLayer = AD.artLayers.add();
infoLayer.kind = LayerKind.TEXT;
infoLayer.name = "Exif WM - Texte"
var TI = infoLayer.textItem;
TI.font = "arial";
TI.size = TxtSize;
TI.color = white;
TI.contents = exif_info
TI.kind = TextType.PARAGRAPHTEXT;
TI.nobreak = true;
// On rÈcupËre la taille du texte
var TextWidth = (infoLayer.bounds[2]-infoLayer.bounds[0]);
var TextHeight = (infoLayer.bounds[3]-infoLayer.bounds[1]);
var TextLeft = AD.width-(TextWidth + Off7 * 2 + Undent);
var TextTop = AD.height-(TextHeight + Off7 * 2 + Undent);
// Et on le dÈplace en bas ‡ gauche, position calculÈes avec les distances mises en place plus haut
TI.position = [TextLeft,TextTop];
// On crÈe un nouveau calque, pour y dessiner notre cadre
var CadreLayer = AD.artLayers.add();
CadreLayer.name = "Exif WM - Cadre";
var CadreRight = TextLeft + TextWidth + Off7;
var CadreBottom = TextTop + TextHeight + Off7;
// cadre dont la taille et la position sont calculÈes selon celles du texte
var selectionBounds = [[TextLeft-Off7, TextTop-Off7], [CadreRight, TextTop-Off7], [CadreRight, CadreBottom], [TextLeft-Off7, CadreBottom]];
// On crÈe une sÈlection (le 2 correspond a l'arrondi des angles...)
AD.selection.select(selectionBounds,SelectionType. REPLACE,2,false);
// On la remplis d'un aplat de noir visible (65 correspond a l'opacité)
AD.selection.fill(black,ColorBlendMode.VIVIDLIGHT, 65);
// On place le texte au dessus du cadre ( pour qu'il ne soit pas affectÈ par l'aplat noir )
infoLayer.move(CadreLayer,ElementPlacement.PLACEBE FORE);
// On lie les deux calques ( ils bougeront ensemble )
// CadreLayer.link(infoLayer);
// on remet en place les unitÈs de mesure sauvegardÈes
preferences.rulerUnits = defaultRulerUnits;
preferences.typeUnits = defaultTypeUnits;
// applatir les calques
// AD.flatten();
//DESELECTIONNER ( rajout du a la suppression du contour blanc )
var id2111 = charIDToTypeID( "setd" );
var desc232 = new ActionDescriptor();
var id2112 = charIDToTypeID( "null" );
var ref108 = new ActionReference();
var id2113 = charIDToTypeID( "Chnl" );
var id2114 = charIDToTypeID( "fsel" );
ref108.putProperty( id2113, id2114 );
desc232.putReference( id2112, ref108 );
var id2115 = charIDToTypeID( "T " );
var id2116 = charIDToTypeID( "Ordn" );
var id2117 = charIDToTypeID( "None" );
desc232.putEnumerated( id2115, id2116, id2117 );
executeAction( id2111, desc232, DialogModes.NO );
Pour DPP, Caméra Raw CS3 et DXO, je suis prêt à vous les fournir si vous êtes interressés, mais je ne sais pas uploader les fichiers.
En espérant vous avoir rendu service...
Bernard
Merci a toi bernardbvo c est plus elegant et independant de la version .... :blink:
Non pas independant de la version : chacun doit trouver ses valeurs de variable e.:blink:
Les valeurs changent aussi en fonction du logiciel utilisé pour derawtiser.
DPP
vitesse=16 Ouverture=10 Iso=12 focale=20
DXO
vitesse=8 Ouverture=9 iso=11 focale=20
Camera Raw CS3
vitesse=7 ouverture=8 iso=10 focale=20
JPG de L'apn
vitesse=16 ouverture=10 iso=12 focale=21
Bernard
Je possede ce code a utiliser sur une image et qui permet de savoir la valeur de " e " et le code de la valeur exif desiree.
Code:// EXIF info.jsx pour obtenir la position et le code de la valeur exif
savedUnits=app.preferences.rulerUnits;
var thisDoc=app.activeDocument;
app.preferences.rulerUnits=Units.PIXELS;
var exif_info="";
for (var e = 0; e < thisDoc.info.exif.length; e++){
try {
exif_info = exif_info + e + " " + 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 = 48; //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;
Pour deselectionner tu peux remplacer la fin de ton code par cette ligne :
Code:app.activeDocument.selection.deselect()
Enfin pour uploader les fichiers tu peux utiliser cet hebergeur .
J ai un peu progresse en jsx depuis ce post .... :blink:
Merci beocien,
ton script est super. Je viens de l'essayer et tout marche à merveille.
Je possede quelques scripts pour me simplifier la vie - mais tout le monde n est pas speede comme moi ! :D - Si cela vous interesse je peux les partager ..... :blink:
Beocien, je suis preneur. Si personne d'autre n'est interresse, tu peux toujours me les envoyer par MP.
Au fait merci pour ton hebergeur gratuit.
Bernard
J ai essaye de faire un tri dans mes javascripts : c est un beau foutoir !
Je fais un tour dedans quand j ai besoin d une fonction precise ou ne me souvient plus d une commande.
J en ai 2 qui ne peuvent pas se faire directement en .atn et dont je me sers beaucoup :
Une pour compresser l image a un poids maximum ( je l ai reglee a 200 ko ) - PoidsMax.jsx et une autre utilisant le script de Simple Viewer mais assez bricole pour que tout se fasse tout seul a mon gout sans remplir les textbox.
J ai mis l ensemble ici : FOUTOIR de jsx
Je suis a disposition pour des precisions .... :blink:
Merci, je crois que j'ai pas mal de boulot à décortiquer tout cela.
Pour ceux que cela interressent, un scrip atn en anglais, mais pas mal surtout pour réaliser un style aquarelle.
http://www.vosfichiers.com/7516838
Un grand merci pour ce partage, mais n'y connaissant rien je vais avoir du boulot...:banned:
Tu as toujours ScriptingListenerJS.log pour te faire des jsx automatiques ... :blink:
bon, alors...
beocien, j'ai tout téléchargé mais n'y connaissant rien dans tout ça j'aurai besoin de précisions pour pouvoir utiliser tout ce "foutoir" avec cs2... (j'ai bon là???), si toutefois on les utilise bien avec cs2 :blink:
j'ai même ouvert le tout... et :surprise:c tout plein de hiéroglyphes... et moi qui croyait que c'était une langue morte depuis des lustres...
:fear(1):
Oui avec CS2 - francais aussi.
Normalement cela se lit comme un fichier texte .
Tu les places dans " C:\Program Files\Adobe\Adobe Photoshop CS2\Paramètres prédéfinis\Scripts " et pour les ouvrir dans photoshop tu fais " Fichier/Scripts/Parcourir "
Personnellement je les mets ailleurs pour les travailler et je ne laisse sur ce dossier que ceux que j emploie couramment.
J ai fait un raccourci clavier ( Ctrl P ) pour les ouvrir plus vite : j ai supprime le raccourci pour " Imprimer " dans " Edition/Raccourcis clavier ... " et je l ai mis " pour Scripts/Parcourir "
merci infiniment je m'en vais essayer tout ça :rudolph:
hello
ben moi je les ai tous pris mais aucun ne fonctionne sur cs4 ou je me plante :::::
desole