En tant que "passionné de photographie" (d'accord, j'avoue que je ne suis pas qualifié, je ne joue que de la photographie depuis quelques jours -_- !!) Il y a toujours une chose qui ne peut être évitée, c'est-à-dire que les photos apporter les paramètres exif. Bien que mon blog ait installé des plug-ins pour afficher les informations EXIF, je pense que les plug-ins ne sont toujours pas très puissants. De plus, certaines opérations complètes doivent être prises en compte, telles que les ajustements de la taille des lots, les informations sur le droit d'auteur, etc.
Bien sûr, heureusement, nous avons encore besoin de PS, et nous pouvons également écrire des scripts PS pour le laisser effectuer certaines opérations en fonction de nos idées :) hehe, j'ai trouvé un script PS à partir d'un article sur le forum Wuji, et j'ai ajouté quelques modifications selon mes propres idées (principalement le temps, la reconnaissance de l'objectif et la reconnaissance focale). Les rendus sont montrés dans l'image de la question. Avec les scripts, c'est beaucoup plus pratique. Par exemple, si vous souhaitez ajouter des bordures EXIF en lots, c'est très simple. Enregistrez simplement une action, puis exécutez cette action :)
Enfin, joignez ce script:
DisplayDialogs = DialogModes.NO; var DefaulTrulerUnits = préférences.RulerUnits; préférences.rulenits = unités.Pixels; // Décomposer une longue chaîne en une fonction de chaîne unique exploitArray (item) {var i = 0; var count = 0; var temppstring = new String (item); temparray = nouveau tableau (1); do {i = tempsstring.indexof (":"); if (i> 0) tempsstring = Tempsstring.substr (i + 1, tempsstring.length-i-1); i = tempsstring.indexof (">"); if (i> 0) {temparray [count] = tempsstring.substr (0, i); tempsstring = tempsstring.substr (i + 1, tempsstring.length-i-1); count ++;} i = tempsstring.indexof ("<"); if (i> 0) {temparray [count] = tempsstring.substr (0, i); tempsstring = tempsstring.substr (i-1, tempsstring.length-i + 1); count ++;}} while (tempsstring.indexof ("</ x: xmpmeta>")> 0); temparray [count] = tempring; retour temparray; } var i = 0; var j = 0; var k = 0; var présulotion = 72; var ad = ""; var resratio = ""; var imageratio = ""; var datearray1 = ""; var datearray2 = ""; var moisArray = ""; var expositionProgramArray = ""; var phodate = ""; "; PhotoHight = ""; var exifdata = ""; var noir = ""; var blanc = ""; var gris = ""; var fwidth = ""; var fhight = ""; var tsize = ""; var tleft = ""; var thight = ""; var infolayer = ""; var ti = ""; nameLeryer = ""; var tn = ""; var stringTemp = ""; // String temporaire var make = ""; // compagnie de caméra var modèle = ""; // modèle de caméra var caméra = ""; // caméra var lens = ""; // look type var LenSused = ""; // l'objectif utilisé var focalLength = ""; // Longueur de mise au point var exposuretime = ""; // obturateur var fnumber = ""; // ouverture var isOsPeedratings = ""; // iSO Paraming var DateTimeoriginal = ""; // time var expositionbiasValue = ""; // compensation d'exposition var expositionprogram = ""; // mode d'exposition mode var tired = ""; // Mode flash // Changez ce que vous voulez écrire, comme le droit d'auteur et votre propre nom Web, etc./if vide, le nom défini par l'appareil photo sera utilisé var créateur = "Photo de Kaisir"; // Photographe AD = ACTIVECUMENT; // AGLIN a compilé un code pour modifier automatiquement la taille de l'image en taille de communication en ligne. // une petite modification, si chaque côté est large et plus étroit que 1000, il sera automatiquement coupé // Le côté le plus long ici est de 750, et le côté le plus court est 500 // Veuillez définir le rapport d'aspect en fonction de la proportion de l'image prise par votre appareil photo // Si vous ne l'utilisez pas, vous pouvez le retirer // --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Ad.width.value / ad.height.value; if (imageratio> 1) ad.resizeImage (resizemax, resizemin, présulation, resamplemethod.biccucucsharper); if (ImageRatio == 1) ad.resizeImage (resizemax, resizemax, présulotion, resampleMethod.BicucucSharper); if (imageratio <1) ad.resizeImage (resizemin, resizemax, présulation, resampleMethod.BicucucSharper); if (imageratio <1) ad.resizeImage (resizemin, resizemax, présulation, resampleMethod.BicucucSharper); } // ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- CS obtient des informations exif // vitesse d'obturation pour (n = 0; n <temparray.length; n ++) {stringTemp = temparray [n]; if (stringTemp.Indexof ("exposuretime")! = - 1) {exposuretime = temparray [n + 1]; Break;}} // Taille de l'ouverture pour (n = 0; n <temparray.length; n ++) {stringTemp = temparray [n]; if (stringTemp.indexof ("fNumber")! = - 1) {Fnumber = temparray [n + 1]; Break;}} // mode d'exposition pour (n = 0; n <TempArray. stringTemp = temparray [n]; if (stringTemp.Indexof ("expositionProgram")! = - 1) {expositionProgram = temparray [n + 1]; Break;}} // compensation d'exposition pour (n = 0; n <temparray.length; n ++) {stringTemp = temparray [n]; if (stringTemp.Indexof ("expositionBiasValue")! = - 1) {expositionBiasValue = temparray [n + 1]; Break;}} // mode flash pour (n = 0; n <temparray.length; n ++) {stringTemp = temparray [n]; if (stringTemp.Indexof ("Fired")! = - 1) {tired = temparray [n + 1]; Break;}} // Date et heure de tir pour (n = 0; n <temparray.length; n ++) {stringTemp = temparray [n]; if (stringTemp.Indexof ("DateTimeoriginal")! = - 1) {DateTimeoriginal = temparray [n + 1]; Break;}} // Utilisez la longueur focale pour (n = 0; n <temparray.length; n ++) {stringTemp = temparray [n]; if (temparray [n] == "focalngle") {focalthength = temparray [n + 1]; bris;}} // iSO réglage pour (n = 0; n <temparray.Length; stringTemp = temparray [n]; if (stringTemp.Indexof ("isOsPeedRatings")! = - 1) {isOsPeedRatings = ", iso" + temparray [n + 5]; Break;}} // Utiliser le type de lentilles pour (n = 0; n <temparray.length; n ++) {stringTemp = temparray [n]; if (temparray [n] == "Lens") {lens = temparray [n + 1]; Break;}} // fabricant de caméras pour (n = 0; n <temparray.length; n ++) {stringTemp = temparray [n]; if (stringTemp.indexof ("make")! = - 1) {make = temparray [n + 1]; Break;}} // modèle de caméra pour (n = 0; n <temparray.length; n ++) {stringTemp = temparray [n]; if (stringTemp.Indexof ("modèle")! = - 1) {var modèle = temparray [n + 1]; Break;}} // Pour certains modèles de caméra, n'incluez pas la pièce du fabricant // caméra = make + modèle; // Pour certains modèles de caméra, incluez la pièce du fabricant Camera = modèle; // propriétaire de l'appareil photo pour (n = 0; n <temparray.length; n ++) {stringTemp = temparray [n]; if (stringTemp.Indexof ("Creator")! = - 1 && créor == "") {créor = temparray [n + 5]; Break;}} // Vérifiez la vitesse d'obturation datarray1 = exposuretime.split ("/"); j = datarray1 [0]; i = dataRay1 [1]; if (j / i> = 1) exposuretime = parseInt (j / i) + "." + (j-puseint (j / i) * i); else {i = parseInt (i / j); j = 1; exosuretime = j + "/" + i;} // calcul the aerture size datarray1 = fnumber.split ("); dataearray1 [0]; j = dataearray1 [1]; if (j> 1) fnumber = i / j; elsefnumber = i; // convertir la compensation d'exposition à Decimal DateArray1 = expositionBiasValue.split ("/"); i = dataRay1 [0]; j = dataRay1 [1]; ExpositionBiasvalue = j = datarray1 [1]; ExposureBiasvalue = J = / RETAINS1 [1]; Le point décimal, juste * 100/100, conservez 1 chiffres, juste * 10/10 // conserver 2 chiffres ici, 20D ne peut pas avoir ces deux lignes si (ExpositionBiasValue! = 0) ExpositionBiasValue = PARSEIINT (ExpositionBiasValue * 100) / 100; if (expositionbiasValue> 0) Exposition BiasValue = "+" + ExpositionBiasValue; ExpositionProgramArray = ["Undefined", "Manual", "Normal Program", "Aperture Priority", "Shutter Priority", "Creative Program", "Action Program", "Portrait Mode", "Landscape Mody" Fired; if (datearray1.indexof ("true")! = - 1) tired = "flashon"; elsefired = "flashoff"; // vérifier focal longue datetimeoriginal.split ("t"); phodate = datarray1 [0]; phapime = datarray1 [1]; datarray2 = phodate.split ("-"); moisArray = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"]; phodate = datearray2 [0] + "-" + moisArray [datearray2 [1] -1] + "-" + dataRay2 [2]; datarray2 = phome.split ("+"); pharme = datarray2 [0]; // Si vous avez un objectif, il suffit de le modifier selon le lentille et la longueur focale maximale si (LENS! = ") {if (Lens.Indexof ("17.0-40.0 mm")! = - 1) LenSused = "Canon 17-40mm F4L USM"; } // S'il n'y a pas d'informations d'objectif, utilisez la méthode d'origine pour comparer Else {var foclength = paSeInt (focalngon); LenSused = "18-55mm 1: 3.5-5.6g"; // if (foclengle> = 17 && foclengle <= 40) // lensused = "nikon"; // if (foclengle> = 70 && foclength <= 200) // lensUSUD = "nikon"; // if (foclengle == "85") // lensUSUD = "nikon"; // if (foclengle == "100") // LenSused = "nikon"; } // dessiner des lignes et des boîtes // définir le noir, vous pouvez également définir d'autres couleurs noir = new SolidColor (); noir.rgb.red = noir.rgb.green = noir.rgb.blue = 0; // définir le blanc, vous pouvez également définir d'autres couleurs blanc = new SolidColor (); white.rgb.red = white.rgb.green = white.rgb.blue = 255; // définir le gris, vous pouvez également définir d'autres couleurs gris = new SolidColor (); grey.rgb.red = grey.rgb.green = grey.rgb.blue = 50; // Ajouter un fond de ligne blanche = blanc; // Si changé en ligne noire // backgroundColor = noir; // La largeur et étroite de la ligne blanche sont réglées à 2 ou 4, des deux côtés, la largeur réelle est divisée par 2ad.Resizecanvas (ad.width.value + 2, ad.height.value + 2, anchorposition.middlecenter); // Ajouter un cadre gris // backgroundColor = gris; // Ajouter un cadre noir BackgroundColor = noir; // s'il est changé en cadre blanc // backgroundColor = blanc; //Border width and height, here set the width and narrow of the black frame to 1/40 of the picture width, and on both sides, the actual width is divided by 2fWidth = parseInt(photoWidth/40);fHight = parseInt(photoWidth/40);//Add AD.resizeCanvas(AD.width.value+fWidth,AD.height.value+fHight, AnchorPosition.middleCenter); // Ajouter un point d'élargissement en bas pour faciliter l'écriture ad.resizanvas (ad.width.value, ad.height.value + fhight + fhight, anchorposition.topcenter); // Standard et paramètres nameLayer = ad.artlayers.add (); nameLayer.kind = couchekind.Text; Tn = namelayer.TextItem; Tn.contents = Creator; // Copyright font, taille de police, couleur et gras, etc. tn.font = "stxingkai"; // TN.Justification alignée à droite = Justification.Right; // Taille de police TSize = ParseInt ((FWidth + 10) / 2); // Marge gauche et marge inférieure tleft = Photowidth; Thight = PhotoHight-Fhight + TSize; // position du marqueur Tn.Position = [tleft, Thight]; tn.Size = TSIZE + 4; Tn.color = blanc; // S'il s'agit d'un cadre blanc, la police est noire //tn.color = noir; Tn.fauxbold = true; infolayer = ad.artlayers.add (); infolayer.kind = couchekind.Text; Ti = infolayer.TextItem; // aligné à droite, s'il est aligné à gauche, la ligne suivante peut être omise ti.justtification = Justification.Right; Thight = PhotoHight + Fhight + TSIZE; // Position du marqueur Ti.Position = [tleft, Thight]; // Affichage: modèle de caméra, leur "+ LenSused +" @ "+ Focalthength +" mm, "+ exosuretime +" sec, f / "; ti.contents = ti.contents + fnumber +", ev "+ expositionbiasValue + isOsPeedratings; // si vous n'êtes pas intéressé par les programmes d'exposition, veuillez supprimer la ligne suivante "+ tiré; ti.contents = ti.contents +" / u000d "+ phodate +" "+ pharme; // police, taille de police, couleur, etc. ti.font =" bold "; //Ti.font = "Arial"; Ti.size = tsize; Ti.color = blanc; // S'il s'agit d'une boîte blanche, la police est noire // ti.color = noir; Ti.fauxbold = true; ad.flatten (); // -------------