Como um "entusiasta fotográfico" (ok, admito que não sou qualificado, só jogo fotografia há alguns dias -_- !!), sempre há uma coisa que não pode ser evitada, que é deixar as fotos trazer os parâmetros EXIF. Embora meu blog tenha instalado plug-ins para exibir informações EXIF, sinto que os plug-ins ainda não são muito poderosos. Além disso, algumas operações abrangentes devem ser consideradas, como ajustes de tamanho de lote, informações de direitos autorais etc.
É claro que, felizmente, ainda precisamos do PS e também podemos escrever scripts PS para permitir que ele execute certas operações de acordo com nossas idéias :) Hehe, encontrei um script de PS de um post no fórum de Wuji e adicionei algumas modificações de acordo com minhas próprias idéias (principalmente o reconhecimento de lentes e o focal). As renderizações são mostradas na imagem da pergunta. Com scripts, é muito mais conveniente. Por exemplo, se você deseja adicionar fronteiras EXIF em lotes, é muito simples. Basta gravar uma ação e depois em lote executar esta ação :)
Finalmente, anexe este script:
displayDialogs = dialogmodes.no; varfaultrulerunits = preferências.Rulerunits; preferências.Rulerunits = units.pixels; // decompõe uma string longa em uma única função de string exploitarRray (item) {var i = 0; var count = 0; var tempstring = new String (item); temparray = nova matriz (1); do {i = tempstring.indexof (":"); if (i> 0) tempstring = tempstring.substr (i+1, tempstring.length-i-1); i = tempstring.indexof (">"); if (i> 0) {iMparray [contagem] = tempstring.subs (0; tempstring = tempstring.substr (i+1, tempstring.length-i-1); count ++;} i = tempstring.indexof ("<"); if (i> 0) {temparray [contagem] = tempstring.substr (0, i); tempstring = tempstring.substr (i-1, tempstring.length-i+1); count ++;}} while (tempstring.indexof ("</x: xmpmeta>")> 0); temparray [contagem] = tempstring; retornar Temparray; } var i = 0; var j = 0; var k = 0; var presulotion = 72; var ad = ""; var resratio = ""; var imageratio = ""; var dateArray1 = ""; var dateArray2 = "" "; var morthArray =" "var com exposição (" "var phodate"; "; fotohight = ""; var exifdata = ""; var preto = ""; var white = ""; var cinza = ""; var fwidth = ""; var fhight = "" "; var tsize =" "; var tleft =" "; var tn = ""; var stringTemp = ""; // String temporária var make = ""; // Companhia da câmera var modelo = ""; // Modelo da câmera var câmera = ""; // câmera var lens = ""; // tipo de look var var lensused = ""; // a lente usada var focalngth = ""; // foco comprimento var exposureTime = ""; // obturador var fnumber = ""; // abertura var isoSopeedratings = ""; // configuração iso var datimeoriginal = ""; // tempo de disparo var exposenceBiasValue = ""; // compensação de exposição var exSponceProgram = ""; // Modo de exposição do programa vareado = "" ";; // Modo flash // Altera para o que você deseja escrever, como direitos autorais e seu próprio nome na web, etc./f Empty, o nome definido pela câmera será usado var crior = "foto por kaisir"; // fotógrafo ad = activedocument; // AGLIN compilou um código para alterar automaticamente o tamanho da imagem para o tamanho da comunicação on -line. // Um pouco de modificação, se ambos os lados forem largos e mais estreitos que 1000, será automaticamente cortado // o lado mais longo aqui é 750, e o lado mais curto é 500 //, defina a proporção de acordo com a proporção da imagem tirada pela sua câmera // se você não a usa, você pode removê -la / /------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Ad.width.value/ad.height.value; if (imageratio> 1) ad.ResizeImage (ResrizEMAX, ResrizeMin, Presulotion, resmampleMethod.bicubicsharper); if (imageratio == 1) ad.ResizeImage (ResrizEMAX, ResrizeMax, Presulotion, resmampleMethod.bicubicsharper); if (Imageratio <1) ad.ResizeImage (Resazemin, ResrizEMAX, Presulotion, resmampleMethod.bicubicsharper); if (Imageratio <1) ad.ResizeImage (Resazemin, ResrizEMAX, Presulotion, resmampleMethod.bicubicsharper); } // -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- CS obtém informações exif // velocidade do obturador para (n = 0; n <temparray.length; n ++) {stringtemp = temparray [n]; if (stringtemp.indexOF ("exposureTime")! =-1) {exposureTime = temparray [n+1]; Break;}} // Tamanho da abertura para (n = 0; n <temparray.length; n ++) {stringtemp = temparray [n]; if (stringtemp.indexOf ("fnumber")! {stringTemp = temparray [n]; if (stringtemp.indexof ("exposenceProgram")! =-1) {exposiçãoProgram = temparray [n+1]; Break;}} // Compensação de exposição para (n = 0; n <temparray.length; n ++) {stringTemp = temparray [n]; if (stringtemp.indexof ("ExposesBiasValue")! =-1) {exposiçãoBiasvalue = Temparray [n+1]; Break;}} // Modo flash para (n = 0; n <temparray.length; n ++) {stringtemp = temparray [n]; if (stringtemp.indexOf ("disparado")! =-1) {disparado = temparray [n+1]; Break;}} // Data e hora de tiro para (n = 0; n <temparray.length; n ++) {stringTemp = temparray [n]; if (stringtemp.indexOF ("DateTimeoriginal")! =-1) {DateTimeoriginal = Temparray [n+1]; quebra;}} // use a distância focal para (n = 0; n <temparray.length; n ++) {stringtemp = temparray [n]; if (temparray [n] == "focallength) {focalngth = tEMParray [n+1]; quebra; stringTemp = temparray [n]; if (stringtemp.indexof ("isoSopeedratings")! =-1) {isoSoSeedratings = ", iso"+temparray [n+5]; quebra;}} // Use o tipo de lente para (n = 0; n <temparray.length; n ++) {stringTemp = temparray [n]; if (temparray [n] == "lente") {lente = temparray [n+1]; Break;}} // Fabricante de câmera para (n = 0; n <temparray.length; n ++) {stringtemp = temparray [n]; if (stringtemp.indexOf ("make")! =-1) {make = temparray [n+1]; Break;}} // Modelo da câmera para (n = 0; n <temparray.length; n ++) {stringtemp = temparray [n]; if (stringtemp.indexOf ("modelo")! =-1) {var modelo = temparray [n+1]; Break;}} // Para alguns modelos de câmera, não inclua a parte do fabricante // câmera = make+modelo; // Para alguns modelos de câmera, inclua a parte da parte do fabricante = modelo; // proprietário da câmera para (n = 0; n <temparray.length; n ++) {stringtemp = temparray [n]; if (stringtemp.indexOf ("criador")! =-1 && crior == "") {Creator = temparray [n+5]; Break;}} // Verifique a velocidade do obturador DataArray1 = ExposureTime.split ("/"); j = DateArray1 [0]; i = = = dateArray1 [1]; if (j/i> = 1) exposureTime = parseInt (j/i)+"."+(J-parseInt (j/i)*i); else {i = parseInt (i/j); j = 1; exposureTime = j+"/" i;} // calcular o tamanho da torre. dateArray1 [0]; j = dateArray1 [1]; if (j> 1) fnumber = i/j; elsefnumber = i; // converte a compensação de exposição em DataArraia decimal1 = exposiçãoBiasValue.split ("/"); i = datarray1 [0]; j = dateArray1 [1]; Apenas *100/10, mantenha 1 dígito, apenas *10/10 // retém 2 dígitos aqui, 20D não pode ter essas duas linhas se (exposiçãoBiasValue! = 0) ExposesBiasValue = parseInt (exposiçãoBiasValue *100)/100; ["Indefinido", "manual", "programa normal", "prioridade da abertura", "prioridade do obturador", "programa criativo", "Programa de Ação", "Modo Retrato", "Modo de Paisagem"]; ExposiçãoProgram = ExposiçãoProgramaRray [ExposiçãoProgram]; // Verifique o modo DataRay1 = disparado; if (dateArray1.Indexof ("true")! =-1) disparado = "flashon"; elsefired = "flashoff"; // verifique a distância focal dateArray1 = focallength.split ("/"); i = dateArray1 [0]; j = datray1 [1]; focallyngth = parseInt (parseInt = parseInt (i/dataRray1 [0]; DateTeMeoriginal.split ("T"); phodate = dateArray1 [0]; fotime = dateArray1 [1]; dateArray2 = phodate.split ("-"); mesesarray = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"]; phodate = dateArray2 [0]+"-"+mesesraRray [dateArray2 [1] -1]+"-"+dateArray2 [2]; dateArray2 = fotime.split ("+"); fotime = dateArray2 [0]; // se você tiver alguma lente, apenas altere-o de acordo com a lente e máxima e máxima2 {if (lens.indexof ("17.0-40,0 mm")! =-1) lente = "Canon 17-40mm f4l usm"; } // Se não houver informações da lente, use o método original para comparar mais {var foclength = parseint (focalngth); lensused = "18-55mm 1: 3,5-5.6g"; // if (foclength> = 17 && foclength <= 40) // lensused = "Nikon"; // if (foclength> = 70 && foclength <= 200) // lensused = "nikon"; // if (foclength == "85") // lensused = "nikon"; // if (foclength == "100") // lensused = "nikon"; } // Desenhe linhas e caixas // Definir preto, você também pode definir outras cores preto = new SolidColor (); preto.rgb.red = preto.rgb.green = preto.rgb.blue = 0; // Defina branco, você também pode definir outras cores branco = new SolidColor (); white.rgb.red = white.rgb.green = white.rgb.blue = 255; // Definir cinza, você também pode definir outras cores cinza = new SolidColor (); Grey.rgb.red = Grey.rgb.green = Grey.rgb.blue = 50; // Adicione uma linha branca BackgroundColor = White; // se alterado para linha preta // BackgroundColor = Black; // A largura e estreita da linha branca são definidas como 2 ou 4, em ambos os lados, a largura real é dividida por 2AD.Resizecanvas (ad.width.value+2, ad.Height.value+2, anchorposition.middlecenter); // Adicionar quadro cinza // BackgroundColor = Gray; // Adicione o quadro preto BackgroundColor = Black; // se alterado para o quadro branco // backgroundcolor = branco; // largura e altura da borda, aqui define a largura e estreita da estrutura preta como 1/40 da largura da imagem e, em ambos os lados, a largura real é dividida por 2FWidth = parseint (Photowidth/40); fhight.widthth.VhItth (photowidth/40); // Ad.ResizElD.WId.Width.Width.Vel.VHOUT.VHET.VH.WID.WID.WID.WID. Anchorposition.middlecenter); // Adicione um ponto de ampliação na parte inferior para facilitar a redação ad.resizeCanvas (ad.width.value, ad.height.value+fhight+fhight, anchorposition.topcenter); // Padrão e parâmetros nameLayer = ad.artLayers.add (); namelayer.kind = layerkind.text; Tn = namelayer.textItem; Tn.contents = Creator; // Fonte de direitos autorais, tamanho da fonte, cor e negrito, etc. tn.font = "stxingkai"; // alinhado direito tn.justification = justification.right; // Tamanho da fonte tsize = parseint ((fwidth+10)/2); // margem esquerda da fonte e margem inferior tleft = photowidth; thight = fotohight-thight+tsize; // posição do marcador tn.position = [tleft = thight, thushight+tsize; Tn.color = branco; // Se for uma estrutura branca, a fonte é preta //tn.color = preto; Tn.fauxbold = true; Infolayer = ad.artLayers.add (); Infolayer.kind = layerkind.text; Ti = Infolayer.TextItem; // alinhado direito, se for deixado alinhado, a linha a seguir pode ser omitida ti.Justification = Justification.right; Thight = PhotoHight+fhight+tsize; // Posição do marcador Ti.Position = [tleft, thight]; Exibição: Modelo de câmera, Lente, Focal, tempo de exposição, Aperture, é, é que, é que a câmera, o tempo de focal, o tempo de focal, o tempo de exposição, o tempo, o theft]; "+lnsused+" @"+focallength+" mm ",+exposureTime+" s "f/"; ti.contents = ti.contents+fnumber+", ev"+exposiçãoBiasValue+isoSpeedRatings; // se você não estiver interessado em programas de exposição, remova os seguintes ti.contentes "ti" ti "ti" ti "ti" ti "ti" ti "ti" ti "ti" ti "ti" ti "ti" ti "ti" ti "ti" ti "ti" ti "ti" ti "ti" ti "ti" " "+disparado; Ti.contents = Ti.Contents+"/u000d "+phodate+" "+fotime; // Fonte, tamanho da fonte, cor, etc. ti.font =" Bold "; //Ti.font = "Arial"; Ti.size = tsize; Ti.color = branco; // Se for uma caixa branca, a fonte é preta // ti.color = preto; Ti.fauxbold = true; ad.flatten (); // -------------