{"id":65,"date":"2006-08-26T18:11:00","date_gmt":"2006-08-26T18:11:00","guid":{"rendered":"http:\/\/www.knackes.com\/blog\/?p=65"},"modified":"2006-08-26T18:11:00","modified_gmt":"2006-08-26T18:11:00","slug":"89-watermark-exif-sous-photoshop-cs2","status":"publish","type":"post","link":"https:\/\/kim6.knackes.com\/blog\/index.php\/2006\/08\/26\/89-watermark-exif-sous-photoshop-cs2\/","title":{"rendered":"Watermark EXIF sous Photoshop CS2"},"content":{"rendered":"<p>Si vous regardez les version \u00ab\u00a0grand format\u00a0\u00bb de mes photos, vous aurez remarqu\u00e9 ce petit encart :<\/p>\n<p><center><img decoding=\"async\" alt=\"\" src=\"https:\/\/static.knackes.com\/images\/oldies\/WM_EXIF.jpg\" \/><\/center>Je vais expliquer dans ce billet comment le cr\u00e9er automatiquement \u00e0 l&rsquo;aide du language de script de Photoshop CS2.<\/p>\n<p><em><strong>Mise \u00e0 jour :<\/strong><\/em><a href=\"\/blog\/index.php?2007\/12\/01\/159-watermark-exif-sous-photoshop-cs2-nouvelle-version\">Nouvelle version<\/a>.<br \/>\n<!--more--><\/p>\n<p>Commen\u00e7ons par poser les bases :<\/p>\n<ul>\n<li>Je n&rsquo;ai test\u00e9 ce script qu&rsquo;avec Photoshop CS2, sous Windows 2000 et avec des photos issues de mon Canon 350D. Toute autre utilisation n\u00e9cessitera surement des am\u00e9nagements.<\/li>\n<li>Le script est au <span class=\"kw2\">for<\/span>mat JSX, extention du language Javascript gr\u00e2ce aux objets COM export\u00e9s par Photoshop. Son utilisation ne n\u00e9cessite aucune connaissance particuli\u00e8re, sa compr\u00e9hension sera grandement facilit\u00e9 par la maitrise du langage de script Javascript ou au moins une connaissance du C.<\/li>\n<li>Pour qu&rsquo;un script apparaisse dans le menu Fichier\/Script de CS2, il faut le copier dans le sous-r\u00e9pertoire \u00ab\u00a0C:\\Program Files\\Adobe\\Adobe Photoshop CS2\\Param\u00e8tres pr\u00e9d\u00e9finis\\Scripts\\\u00a0\u00bb<\/li>\n<li>J&rsquo;ai pris pour base un script d\u00e9j\u00e0 existant \u00e9crit par mlk de <a href=\"http:\/\/www.kirupaforum.com\">kirupaforum<\/a>. Tout le cr\u00e9dit de la cr\u00e9ation lui en revient donc.<\/li>\n<\/ul>\n<table width=\"490\">\n<tbody>\n<tr>\n<td>\n<div class=\"syntax\">\n<div class=\"javascript\" style=\"font-family: monospace;\">\n<ol>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"co1\">\/\/ Pour \u00eatre sur que la fen\u00eatre de photoshop soit active<\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">#target photoshop<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">app.bringToFront();<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"co1\">\/\/ A d\u00e9commenter si l&rsquo;on veux d\u00e9boger le script<\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><span class=\"coMULTI\">\/*<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"coMULTI\">debug level: 0-2 (0:disable, 1:break on error, 2:break at beginning)<\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><span class=\"coMULTI\">$.level = 0;<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"coMULTI\">debugger; \/\/ launch debugger on next line<\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><span class=\"coMULTI\">*\/<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><span class=\"co1\">\/\/ Pas de questions pendant le script<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">displayDialogs = DialogModes.NO;<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"co1\">\/\/ On sauvegarde et met en place les unit\u00e9s de mesure<\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><span class=\"kw2\">var<\/span> defaultRulerUnits = preferences.rulerUnits;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">preferences.rulerUnits = Units.PIXELS;<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><span class=\"kw2\">var<\/span> defaultTypeUnits = preferences.typeUnits;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">preferences.typeUnits = TypeUnits.PIXELS;<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"co1\">\/\/ Quelques variables fort utiles pour la suite<\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"kw2\">var<\/span> AD = activeDocument;<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"kw2\">var<\/span> black = <span class=\"kw2\">new<\/span> SolidColor();<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">black.rgb.red = black.rgb.green = black.rgb.blue = <span class=\"nu0\">0<\/span>;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"kw2\">var<\/span> white = <span class=\"kw2\">new<\/span> SolidColor();<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">white.rgb.red = white.rgb.green = white.rgb.blue = <span class=\"nu0\">255<\/span>;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">backgroundColor = black;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><span class=\"kw2\">var<\/span> header = <span class=\"st0\">\u00a0\u00bb 133434 \u00ab\u00a0<\/span>;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><span class=\"co1\">\/\/ Nous allons chercher les infos qui nous interessent dans la liste des infos EXIF<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><span class=\"kw1\">for<\/span>(n = <span class=\"nu0\">0<\/span>; n &lt; AD.info.exif.length; n = n + <span class=\"nu0\">1<\/span> ) {<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"kw2\">var<\/span> stringTemp = AD.info.exif[n][<span class=\"nu0\">1<\/span>];<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"co1\">\/\/ J&rsquo;ai trouv\u00e9 ces r\u00e9f\u00e9rence \u00e0 coup d&rsquo;essais, le nom de variable devraient \u00eatre<\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"co1\">\/\/ en toutes lettres, probablement un probl\u00e8me de traduction.<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"co1\">\/\/ Dur\u00e9e d&rsquo;exposition<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"kw1\">if<\/span>(stringTemp.indexOf(<span class=\"st0\">\u00a0\u00bb 133434&Prime;<\/span>)!=<span class=\"nu0\">-1<\/span>){<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"kw2\">var<\/span> expTime = stringTemp.substr(header.length,stringTemp.length-header.length);<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 }<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"co1\">\/\/ Date de prise de vue<\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"kw1\">if<\/span>(stringTemp.indexOf(<span class=\"st0\">\u00a0\u00bb 136867&Prime;<\/span>)!=<span class=\"nu0\">-1<\/span>){<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"kw2\">var<\/span> phoTime = stringTemp.substr(header.length,stringTemp.length-header.length);<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"kw2\">var<\/span> dateArray1 = phoTime.split(<span class=\"st0\">\u00a0\u00bb \u00ab\u00a0<\/span>, <span class=\"nu0\">1<\/span>);<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 phoTime = dateArray1[<span class=\"nu0\">0<\/span>];<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"kw2\">var<\/span> dateArray2 = phoTime.split(<span class=\"st0\">\u00ab\u00a0:\u00a0\u00bb<\/span>);<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"kw2\">var<\/span> monthsArray =[<span class=\"st0\">\u00ab\u00a0Janvier\u00a0\u00bb<\/span>, <span class=\"st0\">\u00ab\u00a0F\u00e9vrier\u00a0\u00bb<\/span>, <span class=\"st0\">\u00ab\u00a0Mars\u00a0\u00bb<\/span>, <span class=\"st0\">\u00ab\u00a0Avril\u00a0\u00bb<\/span>, <span class=\"st0\">\u00ab\u00a0Mai\u00a0\u00bb<\/span>, <span class=\"st0\">\u00ab\u00a0Juin\u00a0\u00bb<\/span>, <span class=\"st0\">\u00ab\u00a0Juillet\u00a0\u00bb<\/span>, <span class=\"st0\">\u00ab\u00a0Ao\u00fbt\u00a0\u00bb<\/span>, <span class=\"st0\">\u00ab\u00a0Septembre\u00a0\u00bb<\/span>, <span class=\"st0\">\u00ab\u00a0Octobre\u00a0\u00bb<\/span>, <span class=\"st0\">\u00ab\u00a0Novembre\u00a0\u00bb<\/span>, <span class=\"st0\">\u00ab\u00a0D\u00e9cembre\u00a0\u00bb<\/span>];<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 phoTime = dateArray2[<span class=\"nu0\">2<\/span>] +<span class=\"st0\">\u00a0\u00bb \u00ab\u00a0<\/span>+ monthsArray[dateArray2[<span class=\"nu0\">1<\/span>]<span class=\"nu0\">-1<\/span>]+<span class=\"st0\">\u00a0\u00bb \u00ab\u00a0<\/span>+dateArray2[<span class=\"nu0\">0<\/span>];<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">\u00a0 \u00a0 \u00a0 \u00a0 }<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"co1\">\/\/ Mod\u00e8le d&rsquo;appareil photo<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"kw1\">if<\/span>(stringTemp.indexOf(<span class=\"st0\">\u00a0\u00bb 100272&Prime;<\/span>)!=<span class=\"nu0\">-1<\/span>){<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"kw2\">var<\/span> cameraModel = stringTemp.substr(header.length,stringTemp.length-header.length);<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 }<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"co1\">\/\/ Ouverture focale<\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"kw1\">if<\/span>(stringTemp.indexOf(<span class=\"st0\">\u00a0\u00bb 133437&Prime;<\/span>)!=<span class=\"nu0\">-1<\/span>){<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"kw2\">var<\/span> FStop = stringTemp.substr(header.length,stringTemp.length-header.length);<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">\u00a0 \u00a0 \u00a0 \u00a0 }<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"co1\">\/\/ R\u00e8glage ISO<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"kw1\">if<\/span>(stringTemp.indexOf(<span class=\"st0\">\u00a0\u00bb 134855&Prime;<\/span>)!=<span class=\"nu0\">-1<\/span>){<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"kw2\">var<\/span> ISO = stringTemp.substr(header.length,stringTemp.length-header.length);<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 }<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"co1\">\/\/ Longueur focale<\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"kw1\">if<\/span>(stringTemp.indexOf(<span class=\"st0\">\u00a0\u00bb 137386&Prime;<\/span>)!=<span class=\"nu0\">-1<\/span>){<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"kw2\">var<\/span> FLength = stringTemp.substr(header.length,stringTemp.length-header.length);<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">\u00a0 \u00a0 \u00a0 \u00a0 }<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">}<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"kw2\">var<\/span> Off7 = <span class=\"nu0\">7<\/span>;\u00a0 \u00a0 <span class=\"co1\">\/\/ Distance entre le texte et le cadre<\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><span class=\"kw2\">var<\/span> Undent = <span class=\"nu0\">6<\/span>;\u00a0 <span class=\"co1\">\/\/ Distance entre le cadre et le bord de la photo<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"kw2\">var<\/span> TxtSize = <span class=\"nu0\">6<\/span>; <span class=\"co1\">\/\/ Taille du texte<\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"co1\">\/\/ On cr\u00e9e un nouveau calque texte<\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><span class=\"kw2\">var<\/span> infoLayer = AD.artLayers.add();<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">infoLayer.kind = LayerKind.TEXT;<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">infoLayer.<span class=\"kw3\">name<\/span> = <span class=\"st0\">\u00ab\u00a0Exif WM &#8211; Texte\u00a0\u00bb<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"kw2\">var<\/span> TI = infoLayer.textItem;<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">TI.font = <span class=\"st0\">\u00ab\u00a0Verdana\u00a0\u00bb<\/span>;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">TI.size = TxtSize;<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">TI.color = white;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><span class=\"co1\">\/\/ Voici le texte, \u00ab\u00a0\\u000D\u00a0\u00bb repr\u00e9sente un retour chariot ( caract\u00e8re n\u00b013, D en hexad\u00e9cimal)<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">TI.contents = cameraModel<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">TI.contents = TI.contents + <span class=\"st0\">\u00ab\u00a0<span class=\"es0\">\\u<\/span>000D\u00a0\u00bb<\/span> + FLength + <span class=\"st0\">\u00a0\u00bb\u00a0 \u00ab\u00a0<\/span> + expTime + <span class=\"st0\">\u00a0\u00bb\u00a0 \u00ab\u00a0<\/span> + FStop + <span class=\"st0\">\u00a0\u00bb\u00a0 \u00ab\u00a0<\/span> + ISO + <span class=\"st0\">\u00a0\u00bb ISO\u00a0\u00bb<\/span>;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">TI.contents = TI.contents + <span class=\"st0\">\u00ab\u00a0<span class=\"es0\">\\u<\/span>000D\u00a0\u00bb<\/span> + <span class=\"st0\">\u00ab\u00a0\u00a9 \u00ab\u00a0<\/span>+ phoTime +<span class=\"st0\">\u00a0\u00bb NH\u00a0\u00bb<\/span>;<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">TI.kind = TextType.PARAGRAPHTEXT;<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">TI.nobreak = <span class=\"kw2\">true<\/span>;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><span class=\"co1\">\/\/ On r\u00e9cup\u00e8re la taille du texte<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"kw2\">var<\/span> TextWidth\u00a0 = (infoLayer.bounds[<span class=\"nu0\">2<\/span>]-infoLayer.bounds[<span class=\"nu0\">0<\/span>]);<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><span class=\"kw2\">var<\/span> TextHeight = (infoLayer.bounds[<span class=\"nu0\">3<\/span>]-infoLayer.bounds[<span class=\"nu0\">1<\/span>]);<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"kw2\">var<\/span> TextLeft = AD.width-(TextWidth + Off7 * <span class=\"nu0\">2<\/span> + Undent);<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><span class=\"kw2\">var<\/span> TextTop = AD.height-(TextHeight + Off7 * <span class=\"nu0\">2<\/span> + Undent);<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><span class=\"co1\">\/\/ Et on le d\u00e9place en bas \u00e0 gauche, position calcul\u00e9es avec les distances mises en place plus haut<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">TI.position = [TextLeft,TextTop];<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><span class=\"co1\">\/\/ On cr\u00e9e un nouveau calque, pour y dessiner notre cadre<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"kw2\">var<\/span> CadreLayer = AD.artLayers.add();<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">CadreLayer.<span class=\"kw3\">name<\/span> = <span class=\"st0\">\u00ab\u00a0Exif WM &#8211; Cadre\u00a0\u00bb<\/span>;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"kw2\">var<\/span> CadreRight = TextLeft + TextWidth + Off7;<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><span class=\"kw2\">var<\/span> CadreBottom = TextTop + TextHeight + Off7;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><span class=\"co1\">\/\/ cadre dont la taille et la position sont calcul\u00e9es selon celles du texte<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"kw2\">var<\/span> selectionBounds = [[TextLeft-Off7, TextTop-Off7], [CadreRight, TextTop-Off7], [CadreRight, CadreBottom], [TextLeft-Off7, CadreBottom]];<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"co1\">\/\/ On cr\u00e9e une s\u00e9lection<\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">AD.selection.select(selectionBounds,SelectionType.REPLACE,<span class=\"nu0\">0<\/span>,<span class=\"kw2\">false<\/span>);<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"co1\">\/\/ On la remplis d&rsquo;un aplat de noir visible \u00e0 35% ( transparent \u00e0 65% donc )<\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">AD.selection.fill(black,ColorBlendMode.VIVIDLIGHT,<span class=\"nu0\">35<\/span>);<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"co1\">\/\/ Puis on trace le contour blanc visible \u00e0 100%<\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">AD.selection.stroke(white,<span class=\"nu0\">3<\/span>,StrokeLocation.OUTSIDE, ColorBlendMode.VIVIDLIGHT, <span class=\"nu0\">100<\/span>, <span class=\"kw2\">false<\/span>);<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">AD.selection.deselect();<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"co1\">\/\/ On place le texte au dessus du cadre ( pour qu&rsquo;il ne soit pas affect\u00e9 par l&rsquo;aplat noir )<\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">infoLayer.move(CadreLayer,ElementPlacement.PLACEBEFORE);<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"co1\">\/\/ On lie les deux calques ( ils bougeront ensemble )<\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">CadreLayer.link(infoLayer);<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><span class=\"co1\">\/\/ on remet en place les unit\u00e9s de mesure sauvegard\u00e9es<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">preferences.rulerUnits = defaultRulerUnits;<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">preferences.typeUnits = defaultTypeUnits;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><span class=\"co1\">\/\/ On pourrait applatir les calques<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"coMULTI\">\/* <\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><span class=\"coMULTI\">AD.flatten();<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"coMULTI\">*\/<\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"co1\">\/\/ On pourrait sauvegarder automatiquement le r\u00e9sultat<\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><span class=\"coMULTI\">\/*<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"coMULTI\">jpgFile = new File( \u00ab\u00a0\/Temp001.jpeg\u00a0\u00bb )<\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><span class=\"coMULTI\">jpgSaveOptions = new JPEGSaveOptions()<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"coMULTI\">jpgSaveOptions.embedColorProfile = true<\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><span class=\"coMULTI\">jpgSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"coMULTI\">*\/<\/span><\/div>\n<\/li>\n<\/ol>\n<\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"excerpt":{"rendered":"<p>Si vous regardez les version \u00ab\u00a0grand format\u00a0\u00bb de mes photos, vous aurez remarqu\u00e9 ce petit encart :<\/p>\n<p> <center><img decoding=\"async\" src=\"https:\/\/static.knackes.com\/images\/oldies\/WM_EXIF.jpg\" \/><\/center><\/p>\n<p> Je vais expliquer dans ce billet comment le cr\u00e9er automatiquement \u00e0 l&rsquo;aide du language de script de Photoshop CS2.<\/p>\n<p> <em><strong>Mise \u00e0 jour :<\/strong><\/em><a href=\"\/blog\/index.php?2007\/12\/01\/159-watermark-exif-sous-photoshop-cs2-nouvelle-version\">Nouvelle version<\/a>. <a href=\"https:\/\/kim6.knackes.com\/blog\/index.php\/2006\/08\/26\/89-watermark-exif-sous-photoshop-cs2\/\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-65","post","type-post","status-publish","format-standard","hentry","category-developpement"],"_links":{"self":[{"href":"https:\/\/kim6.knackes.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/65","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kim6.knackes.com\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kim6.knackes.com\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kim6.knackes.com\/blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kim6.knackes.com\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=65"}],"version-history":[{"count":0,"href":"https:\/\/kim6.knackes.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/65\/revisions"}],"wp:attachment":[{"href":"https:\/\/kim6.knackes.com\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=65"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kim6.knackes.com\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=65"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kim6.knackes.com\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=65"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}