- 
// Pour être sur que la fenêtre de photoshop soit active
 
- 
#target photoshop
 
- 
app.bringToFront();
 
- 
 
- 
// A décommenter si l’on veux déboger le script
 
- 
/*
 
- 
debug level: 0-2 (0:disable, 1:break on error, 2:break at beginning)
 
- 
$.level = 0;
 
- 
debugger; // launch debugger on next line
 
- 
*/
 
- 
 
- 
// 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;
 
- 
 
- 
var header =  » 133434 « ;
 
- 
 
- 
// Nous allons chercher les infos qui nous interessent dans la liste des infos EXIF
 
- 
 
- 
for(n = 0; n < AD.info.exif.length; n = n + 1 ) {
 
- 
        var stringTemp = AD.info.exif[n][1];
 
- 
 
- 
        // J’ai trouvé ces référence à coup d’essais, le nom de variable devraient être
 
- 
        // en toutes lettres, probablement un problème de traduction.
 
- 
 
- 
        // Durée d’exposition
 
- 
        if(stringTemp.indexOf( » 133434″)!=-1){
 
- 
                var expTime = stringTemp.substr(header.length,stringTemp.length-header.length);
 
- 
        }
 
- 
 
- 
        // Date de prise de vue
 
- 
        if(stringTemp.indexOf( » 136867″)!=-1){
 
- 
                var phoTime = stringTemp.substr(header.length,stringTemp.length-header.length);
 
- 
                var dateArray1 = phoTime.split( » « , 1);
 
- 
                phoTime = dateArray1[0];
 
- 
                var dateArray2 = phoTime.split(« : »);
 
- 
 
- 
                var monthsArray =[« Janvier », « Février », « Mars », « Avril », « Mai », « Juin », « Juillet », « Août », « Septembre », « Octobre », « Novembre », « Décembre »];
 
- 
                phoTime = dateArray2[2] + » « + monthsArray[dateArray2[1]-1]+ » « +dateArray2[0];
 
- 
        }
 
- 
 
- 
        // Modèle d’appareil photo
 
- 
        if(stringTemp.indexOf( » 100272″)!=-1){
 
- 
                var cameraModel = stringTemp.substr(header.length,stringTemp.length-header.length);
 
- 
        }
 
- 
 
- 
        // Ouverture focale
 
- 
        if(stringTemp.indexOf( » 133437″)!=-1){
 
- 
                var FStop = stringTemp.substr(header.length,stringTemp.length-header.length);
 
- 
        }
 
- 
 
- 
        // Règlage ISO
 
- 
        if(stringTemp.indexOf( » 134855″)!=-1){
 
- 
                var ISO = stringTemp.substr(header.length,stringTemp.length-header.length);
 
- 
        }
 
- 
 
- 
        // Longueur focale
 
- 
        if(stringTemp.indexOf( » 137386″)!=-1){
 
- 
                var FLength = stringTemp.substr(header.length,stringTemp.length-header.length);
 
- 
        }
 
- 
}
 
- 
 
- 
var Off7 = 7;    // Distance entre le texte et le cadre
 
- 
var Undent = 6;  // Distance entre le cadre et le bord de la photo
 
- 
var TxtSize = 6; // 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 = « Verdana »;
 
- 
TI.size = TxtSize;
 
- 
TI.color = white;
 
- 
 
- 
// Voici le texte, « \u000D » représente un retour chariot ( caractère n°13, D en hexadécimal)
 
- 
TI.contents = cameraModel
 
- 
TI.contents = TI.contents + « \u000D » + FLength +  »  «  + expTime +  »  «  + FStop +  »  «  + ISO +  » ISO »;
 
- 
TI.contents = TI.contents + « \u000D » + « © « + phoTime + » NH »;
 
- 
 
- 
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
 
- 
AD.selection.select(selectionBounds,SelectionType.REPLACE,0,false);
 
- 
// On la remplis d’un aplat de noir visible à 35% ( transparent à 65% donc )
 
- 
AD.selection.fill(black,ColorBlendMode.VIVIDLIGHT,35);
 
- 
// Puis on trace le contour blanc visible à 100%
 
- 
AD.selection.stroke(white,3,StrokeLocation.OUTSIDE, ColorBlendMode.VIVIDLIGHT, 100, false);
 
- 
AD.selection.deselect();
 
- 
 
- 
// On place le texte au dessus du cadre ( pour qu’il ne soit pas affecté par l’aplat noir )
 
- 
infoLayer.move(CadreLayer,ElementPlacement.PLACEBEFORE);
 
- 
// 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;
 
- 
 
- 
// On pourrait applatir les calques
 
- 
/* 
 
- 
AD.flatten();
 
- 
*/
 
- 
 
- 
// On pourrait sauvegarder automatiquement le résultat
 
- 
/*
 
- 
jpgFile = new File( « /Temp001.jpeg » )
 
- 
jpgSaveOptions = new JPEGSaveOptions()
 
- 
jpgSaveOptions.embedColorProfile = true
 
- 
jpgSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE
 
- 
*/