-
// 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
-
*/