Como un "entusiasta fotográfico" (está bien, admito que no estoy calificado, solo he estado jugando fotografía durante unos días -_-!) Siempre hay una cosa que no se puede evitar, que es dejar que las fotos traigan los parámetros de Exif. Aunque mi blog ha instalado complementos para mostrar información exif, creo que los complementos aún no son muy poderosos. Además, se deben considerar algunas operaciones integrales, como ajustes de tamaño por lotes, información de derechos de autor, etc.
Por supuesto, afortunadamente, todavía necesitamos PS, y también podemos escribir scripts de PS para permitirle realizar ciertas operaciones de acuerdo con nuestras ideas :) jeje, encontré un script de PS de una publicación en el foro Wuji y agregué algunas modificaciones de acuerdo con mis propias ideas (principalmente tiempo, reconocimiento de lentes y reconocimiento de longitud focal). Las representaciones se muestran en la imagen de la pregunta. Con los scripts, es mucho más conveniente. Por ejemplo, si desea agregar bordes exif en lotes, es muy simple. Simplemente grabe una acción y luego lote ejecute esta acción :)
Finalmente, adjunte este script:
DisplayDialogs = DialogModes.no; var defaultrulerunits = preferences.rulerunits; preferencias.rulerunits = units.pixels; // descompone una cadena larga en una sola función de cadena ExploitarRray (item) {var i = 0; var count = 0; var tempstring = new String (elemento); temparray = nueva matriz (1); do {i = temptring.indexof (":"); if (i> 0) temptring = temptring.substr (i+1, temptring.length-i-1); i = temptring.indexof (">"); if (i> 0) {tempray [count] = temptring.substr (0, i); temptring = temptring.substr (i+1, temptring.length-i-1); count ++;} i = temptring.indexof ("<"); if (i> 0) {temparray [count] = temptring.substr (0, i); temptring = temptring.substr (I-1, temptring.length-i+1); count ++;}} while (temptring.indexof ("</x: xmpmeta>")> 0); temparray [count] = temptRing; TEMPARRACIÓN DE RETURN; } var i = 0; var j = 0; var k = 0; var presulotion = 72; var ad = ""; var rErratio = ""; var imageratio = ""; var dataArray1 = ""; var dataArray2 = ""; var messArray = "" "; var exposureProgram =" "; var phodate ="; var photime = "; var meses fotohight = ""; var exifData = ""; var black = ""; var white = ""; var gris = ""; var fwidth = ""; var fhight = ""; var tsize = ""; var tleft = ""; var Thight = ""; var infolayer = ""; var ti = ""; namelayer = ""; var tn = ""; var stringtemp = ""; // string temporal var make = "" "; // Camera Company Var Model =" ""; // Camera Model Var Camera = ""; // Camera Var Lens = ""; // Mira Type Var LensUsed = ""; // La lente usó var focallength = ""; // Longitud de enfoque var exposeRetime = ""; // obturero var fNumber = ""; // apertura var iseSponedratings = "" "; // configuración iso var datetimeRiginal =" "; // Tiempo de disparo VAR exposureBiasValue =" "; // Compensación de exposición var exposureprogram =" "; // Exposición Modo de programa Var Fired ="; "; // Modo flash // Cambiar a lo que desea escribir, como Copyright y su propio nombre web, etc.//if vacío, el nombre establecido por la cámara se usará var Creator = "Photo por Kaisir"; // Fotografiar AD = ActiveDocument; // Aglin ha compilado un código para cambiar automáticamente el tamaño de la imagen al tamaño de comunicación en línea. // Un poco de modificación, si cualquier lado es ancho y más estrecho que 1000, se cortará automáticamente // el lado más largo aquí es 750, y el lado más corto es 500 // Establezca la relación de aspecto de acuerdo con la proporción de la imagen tomada por su cámara // // ----------------------------------------------------------------------------------------------------------- Ad.width.Value/ad.Height.Value; if (imageRatio> 1) ad.resizeImage (resizemax, resizemin, presesotion, res -uplemethod.bicubicsharper); if (imageratio == 1) ad.resizeImage (resizemax, resizemax, presesotion, resmplemethod.bicubicsharper); if (Imageratio <1) ad.ResizeImage (resizemin, resizemax, presesotion, res -uplemethod.bicubicsharper); if (Imageratio <1) ad.ResizeImage (resizemin, resizemax, presesotion, res -uplemethod.bicubicsharper); } // ----------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- CS obtiene información exif // velocidad de obturación para (n = 0; n <temparray.length; n ++) {stringTemp = temparray [n]; if (stringtemp.indexof ("exposeRetime")! =-1) {exposeTime = temparray [n+1]; ruptura;}} // tamaño de apertura para (n = 0; n <temparray.length; n ++) {stringTemp = Temparray [n]; if (stringtemp.indexof ("fnumber")! =-1) {fNumber = temparray [n+1]; break;}} // exposure el modo para (n = 0; n <<temparray.l longitud; {stringTemp = tempArray [n]; if (stringTemp.IndexOf ("exposureProgram")! =-1) {exposureProgram = Temparray [n+1]; break;}} // Compensación de exposición para (n = 0; n <temparray.length; n ++) {stringTemp = temparray [n]; if (stringtemp.indexof ("exposureBiasValue")! =-1) {exposureBiasvalue = temparray [n+1]; break;}} // Modo flash para (n = 0; n <temparray.length; n ++) {stringTemp = Temparray [n]; if (stringtemp.indexof ("Fired")! =-1) {Fired = Temparray [n+1]; break;}} // Fecha y hora de disparo para (n = 0; n <temparray.length; n ++) {stringtemp = temparray [n]; if (stringtemp.indexof ("dateTimeoriginal")! =-1) {dateTimeoriginal = Temparray [n+1]; break;}} // use la longitud focal para (n = 0; n <temparray.length; n ++) {stringtemp = temparray [n]; if (temparray [n] == "focallength") {focallength = temparray [n+1]; ruptura;}} // configuración de iso stringtemp = temparray [n]; if (stringtemp.indexof ("isospeedratings")! =-1) {isosponedratings = ", iso"+temparray [n+5]; break;}} // use el tipo de lente para (n = 0; n <temparray.length; n ++) {stringTemp = temparray [n]; if (temparray [n] == "lente") {lente = temparray [n+1]; break;}} // fabricante de la cámara para (n = 0; n <temparray.length; n ++) {stringtemp = temparray [n]; if (stringtemp.indexof ("make")! =-1) {make = temparray [n+1]; break;}} // modelo de cámara para (n = 0; n <temparray.length; n ++) {stringtemp = temparray [n]; if (stringtemp.indexof ("modelo")! =-1) {var modelo = temparray [n+1]; break;}} // Para algunos modelos de cámara, no incluya la parte del fabricante // cámara = make+modelo; // Para algunos modelos de cámara, incluya la cámara del fabricante = modelo; // propietario de la cámara para (n = 0; n <temparray.length; n ++) {stringtemp = temparray [n]; if (stringtemp.indexof ("creador")! =-1 && creator == "") {creator = temparray [n+5]; break;}} // verificar la velocidad de obturación datearRay1 = exposeRetime.split ("/"); j = datearray1 [0]; i = datearray1 [1]; if (j/i> = 1) exposeRetime = parseInt (j/i)+"."+(j-parseInt (j/i)*i); else {i = parseInt (i/j); j = 1; exposeTime = j+"/"+i;} // calcula el tamaño de apertura a datearray1 = fnumber.split ("/") datearray1 [0]; j = dataArray1 [1]; if (j> 1) fNumber = i/j; elsefNumber = i; // Convertir la compensación de exposición a decimal dataArray1 = exposureBiasValue.split ("/"); i = dataArray1 [0]; j = dataRearray1 [1]; exposureBIasvalue = i/j;////////////////////////J; punto, solo *100/100, mantenga 1 dígitos, solo *10/10 // retener 2 dígitos aquí, 20d no puede tener estas dos líneas si (exposureBiasValue! = 0) exposureBiasValue = parseInt (exposureBiasValue *100)/100; if (exposureBiasValue> 0) exposureBiasvalue = "+" exposición de exposición; exposureProgramArray = ["Undefined", "manual", "programa normal", "prioridad de apertura", "prioridad de obturador", "programa creativo", "programa de acción", "modo de retrato", "modo de paisaje"]; exposureProgram = exposureProgramArray [exposureProgram]; // modo de control de revisión de datos de datos1 =) Fired; if (dataArray1.IndexOf ("verdadero")! =-1) Fired = "Flashon"; ElseFired = "FlashOff"; // Compruebe la longitud focal dataArray1 = focallength.split ("/"); i = dataArray1 [0]; j = dataArray1 [1]; focAllInt = parseint (I/j); // Cambiar la fecha de la fecha datearray1 = datetimeoriginal.split ("t"); phodate = DataArray1 [0]; Photime = DataArray1 [1]; DataArray2 = Phodate.split ("-"); MesessArray = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"]; Phodate = DataArray2 [0]+"-"+MesessArray [DataArray2 [1] -1]+"-"+DataArray2 [2]; DataArray2 = Photime.split ("+"); Photime = DataArray2 [0]; // Si tiene alguna lente, solo cambie de acuerdo con la lente y la longitud focal de máxima if (LENS! = ") {if (lens.indexof ("17.0-40.0 mm")! =-1) LensuSeed = "Canon 17-40 mm f4l usm"; } // Si no hay información de lente, use el método original para comparar el más {var foclength = parseInt (focall longitud); lensused = "18-55 mm 1: 3.5-5.6g"; // if (foclength> = 17 && foclength <= 40) // lensused = "nikon"; // if (focLength> = 70 && foclength <= 200) // lensued = "nikon"; // if (focLength == "85") // lensued = "nikon"; // if (focLength == "100") // lensued = "nikon"; } // dibujar líneas y cajas // Definir negro, también puede definir otros colores negros = new SolidColor (); black.rgb.red = black.rgb.green = black.rgb.blue = 0; // Definir blanco, también puede definir otros colores blancos = new SolidColor (); white.rgb.red = white.rgb.green = white.rgb.blue = 255; // Definir gris, también puede definir otros colores gris = new SolidColor (); grey.rgb.red = grey.rgb.green = grey.rgb.blue = 50; // Agregar un fondo de línea blanca Color = blanco; // si se cambia a la línea negra // fondoscolor = negro; // El ancho y el estrecho de la línea blanca se establecen en 2 o 4, en ambos lados, el ancho real se divide por 2Ad.resizecanvas (ad.width.value+2, ad.height.value+2, anclaRposition.middlecenter); // Agregar marco gris // backgroundcolor = gris; // Agregar fondo de marco negroColor = negro; // si se cambia al marco blanco // backgroundcolor = white; // Ancho y altura del borde, aquí establece el ancho y el estrecho del marco negro en 1/40 del ancho de la imagen, y en ambos lados, el ancho real se divide por 2fwidth = parseint (Photowidth/40); fhight = parseint (photowidth/40); // agregue Ad.resizecanvas (ad.width.value+fwidth, ad.height.value+fhight, fanchorposition.middlecenter); // Agregue un punto de ensanchamiento en la parte inferior para facilitar la escritura ad.resizecanvas (ad.width.value, ad.height.value+fhight+fhight, fallorposition.topcenter); // Estándar y parámetros namelayer = ad.artlayers.add (); namelayer.kind = layerkind.Text; Tn = namelayer.textitem; Tn.contents = Creator; // Copyright Font, Font Size, Color y Bold, etc. tn.font = "stxingkai"; // a la derecha tn.justification = justification.right; // font size tsize = parseInt ((fwidth+10)/2); // font margen izquierdo y margen inferior tleft = photoWidth; Thight = photoHight-fhight+tsize; // posición del marcador tn.position = [tleft, thight]; tn.size = tsize; Tn.color = blanco; // Si es un marco blanco, la fuente es negra //tn.color = negro; Tn.fauxbold = true; infolayer = ad.artlayers.add (); infolayer.kind = layerkind.Text; Ti = infolayer.textitem; // Alineado a la derecha, si queda alineada, la siguiente línea se puede omitir ti.justification = Justification.Right; Thight = PhotoHight+Fhight+tsize; // Posición del marcador ti.position = [tleft, Thight]; // Modelo: Modelo de cámara, lente, longitud focal, tiempo de exposición, apertura, configuración de ISO, fecha de tiro, etc. Ti.contents Camina+", "+lensUsed+" @"+focalLength+"mm,"+exposureTime+"Sec,F/";TI.contents = TI.contents+fNumber+", EV "+exposureBiasValue+ISOSpeedRatings;//If you are not interested in exposure programs, please remove the following line TI.contents = TI.contents+", "+exposureProgram+", "+Fired; ti.contents = ti.contents+"/u000d "+Phodate+" "+Photime; // Font, tamaño de fuente, color, etc. ti.font =" Bold "; //Ti.font = "Arial"; Ti.size = tsize; Ti.color = blanco; // Si es una caja blanca, la fuente es negra // ti.color = negro; Ti.fauxbold = true; ad.flatten (); // -------------