//////////////////////////////////////////////////////////////////////////// // // Script de création d'un calque texte // contenant les informations EXIF de base, la date et le modèle d'appareil // // © Cédric Girard - http://blog.aube-nature.com // © Janusz - modification texte personnalisé. // ///////////////////////////////////////////////////////////////////////////// #target photoshop // Script dédié à Photoshop app.bringToFront(); // On place Photoshop au premier plan displayDialogs = DialogModes.NO; // Désactivation des boîtes de dialogue // Sauvegarde des unités de mesure en cours, et passage en pixels par défaut var oRulerUnits = preferences.rulerUnits; var oTypeUnits = preferences.typeUnits; preferences.rulerUnits = Units.PIXELS; preferences.typeUnits = TypeUnits.PIXELS; try { 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 previous "searchString" in array inputArray // Modif Cédric GIRARD (recherche par code et non par appelation de champs) ///////////////////////////////////////////////////////////////////////////// function getArrayString(inputArray,searchString) { for(n = 0; n < inputArray.length; n = n + 1 ) { if(inputArray[n] == searchString) { return inputArray[n - 1] } } } // End getArrayString // Définition d'une variable définissant une couleur claire pour le texte var oTextColor = new SolidColor(); oTextColor.rgb.red = 0; oTextColor.rgb.blue = 0; oTextColor.rgb.green = 0; // On crée un nouveau calque texte var oLayer = DocActif.artLayers.add(); oLayer.kind = LayerKind.TEXT; // Type de calque = calque de texte oLayer.name = "photos_infos"; // 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 = "Myriad Pro"; // Définition de la police (ex: "Georgia") oTextItem.size = 11; // Définition de la taille de police oTextItem.color = oTextColor; // Définition de la couleur du texte oTextItem.justification = Justification.RIGHT; // Alignement du texte // oTextItem.antiAliasMethod = AntiAlias.SHARP; // Aliasing // oTextItem.fauxItalic = true; // Style du texte en italique ///////////////////////////////////////////////////////////////////////////// // Zone modifiable (insertion de votre texte) ///////////////////////////////////////////////////////////////////////////// // Texte libre en début de texte var texteLibre = "Janusz - www.ledruide.net"; // Lecture des informations EXIF contenues dans l'image var exifAPN = getArrayString(exifArray, "272"); if( exifAPN != null ) { var exitTempsExpo = getArrayString(exifArray, "33434"); // exitTempsExpo = exitTempsExpo.replace(" sec", "") + "ème " ; exitTempsExpo = exitTempsExpo.replace(" sec", " sec") ; var exifOuverture = getArrayString(exifArray, "33437"); var exifISO = getArrayString(exifArray, "34855"); var exifFocale = getArrayString(exifArray, "37386"); var exifCorrection = getArrayString(exifArray, "37380"); var exifCorrection = getArrayString(exifArray, "37380").replace("33","3").replace("34","3").replace("67","6").replace("66","6").replace("00","0"); if(exifCorrection!="0.0") { exifCorrection=" " + exifCorrection + " EV"; } else { exifCorrection=""; } exitExifData= "\u000D" + exifAPN + ", " + exifFocale.replace(".0 ","") + " " + exifOuverture + " " + exitTempsExpo + " " + exifISO + " ISO" + exifCorrection; } else { exitExifData="\u000D (no Exif) "; } // Récupération de la date var exifDate = getArrayString(exifArray, "36867"); var dateTab1 = exifDate.split(" ", 1); exifDate = dateTab1[0]; var dateTab2 = exifDate.split(":"); // Insertion du modèle d'appareil, d'un saut de ligne suivi des Exifs (si existe) oTextItem.contents = texteLibre + " • " + dateTab2[0] + ", (CC) by-nc-sa" + exitExifData ; // Positionnement du texte en bas à droite (par défaut) oTextItem.position = [DocActif.width-44, DocActif.height-18]; } catch(oErreur) { // Une erreur est survenue... alert( "Une erreur est survenue : " + oErreur.description) } // Remise en place des unités de mesure initiales preferences.rulerUnits = oRulerUnits; preferences.typeUnits = oTypeUnits;