Как «фотографический энтузиаст» (хорошо, я признаю, что я не квалифицирован, я играл в фотографию всего несколько дней --_- !!). Всегда есть одна вещь, которой нельзя избежать, то есть позволить фотографиям принести параметры ESIF. Хотя мой блог установил плагины для отображения информации ESIF, я чувствую, что плагины все еще не очень мощные. Кроме того, необходимо учитывать некоторые комплексные операции, такие как корректировки размера партии, информация об авторском праве и т. Д.
Конечно, к счастью, нам все еще нужна PS, и мы также можем написать сценарии PS, чтобы он позволил ему выполнять определенные операции в соответствии с нашими идеями :) Хе -хе, я нашел сценарий PS из поста на форуме Wuji и добавил некоторые модификации в соответствии с моими собственными идеями (в основном время, распознавание объектива и распознавание фокусного расстояния). Визуализации показаны на вопросе. Со сценариями это гораздо удобнее. Например, если вы хотите добавить границы Evif в партиях, это очень просто. Просто запишите действие, а затем запустите это действие :)
Наконец, прикрепите этот сценарий:
DisplayDialogs = DialogModes.no; var defaultrulerunits = preferences.rulerunits; Preventions.RulerUnits = Units.Pixels; // разложить длинную строку в одну строковую функцию exploItarray (item) {var i = 0; var count = 0; var tempstring = new String (item); Temparray = новый массив (1); do {i = tempstring.indexof (":"); if (i> 0) tempstring = tempstring.substr (i+1, tempstring.length-i-1); i = tempstring.indexof (">"); if (i> 0) {temparray [count] = tempString.substr (0, i); tempstring = tempstring.substr (i+1, tempstring.length-i-1); count ++;} i = tempstring.indexof ("<"); if (i> 0) {temparray [count] = tempstring.substr (0, i); tempstring = tempstring.substr (i-1, tempstring.length-i+1); count ++;}} while (tempstring.indexof ("</x: xmpmeta>")> 0); temparray [count] = tempstring; вернуть временную темпа; } var i = 0; var j = 0; var k = 0; var presulotion = 72; var ad = ""; var resratio = ""; var Imageratio = ""; var datearray1 = ""; var datearray2 = ""; var moneyarray = ";"; var exprogramarray = ""; var phodate = ""; photohight = ""; var exifdata = ""; var black = ""; var White = ""; var grey = ""; var fwidth = ""; var fhight = ""; var tsize = ""; var tleft = ""; var thight = ""; var infolayer = ""; var ti = ""; namelayer = ""; var tn = ""; var stringTemp = ""; // временная строка var Quare = ""; // Компания камеры VAR MODEL = "; // Модель камеры VAR CAMARD =" "; // Камера var lens =" "; // Посмотреть тип var lensused =" "; // Ленза использовал var focallength =" "; // Длина фокусировки var exposuretime = ""; // Заглушка var fnumber = ""; // aperture var isospeedRatings = ""; // iso настройка var dateTimeoriginal = ""; // время съемки var exposurobiaSvalue = ""; // Компенсация воздействия var exprogram = ""; // Режим программы экспозиции vared = ""; // Флэш режим // Изменение на то, что вы хотите написать, например, авторское право и ваше собственное веб -имя и т. Д.//if пусто, имя, установленное камерой, будет использоваться VAR Creator = "Фото кайсир"; // Фотограф AD = ActiveDocument; // Aglin собрал код для автоматического изменения размера изображения на онлайн -размер связи. // Небольшая модификация, если любая сторона широкая и более узкая, чем 1000, она будет автоматически обрезать // самая длинная сторона здесь 750, а самая короткая сторона - 500 //, пожалуйста //-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Ad.width.value/ad.height.value; if (Imageratio> 1) ad.resizeimage (resizemax, resizemin, premulotion, resamplemethod.bicubicsharper); if (Imageratio == 1) ad.ResizeImage (resizemax, resizemax, presulotion, resamplemethod.bicubicsharper); if (Imageratio <1) ad.resizeimage (resizemin, resizemax, preleotion, resamplemethod.bicubicsharper); if (Imageratio <1) ad.resizeimage (resizemin, resizemax, preleotion, resamplemethod.bicubicsharper); }//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- CS получает информацию EXIF // Скорость затвора для (n = 0; n <temparray.length; n ++) {stringTemp = temparray [n]; if (stringtemp.indexof ("exposuretime")! =-1) {exposureTime = temparray [n+1]; Break;}} // Размер апертуры для (n = 0; n <temparray.length; n ++) {stringTemp = temparray [n]; if (stringtemp.indexof ("fnumber")! =-1) {fnumber = temparray [n+1];}}} // Режима программы Exprovision for (n = 0; n <n ++; stringTemp = temparray [n]; if (stringtemp.indexof ("exprososrogram")! =-1) {exprososroprogram = temparray [n+1]; Break;}} // Компенсация экспозиции для (n = 0; n <temparray.length; n ++) {stringTemp = temparray [n]; if (stringtemp.indexof ("exprososobiaSvalue")! =-1) {exprosobiasvalue = temparray [n+1]; Break;}} // Режим вспышки для (n = 0; n <temparray.length; n ++) {stringtemp = temparray [n]; if (stringtemp.indexof ("уволен")! =-1) {warred = temparray [n+1]; Break;}} // Дата выстрела и время для (n = 0; n <temparray.length; n ++) {stringTemp = temparray [n]; if (stringtemp.indexof ("datetimeoriginal")! =-1) {dateTimeoriginal = temparray [n+1]; Break;}} // Используйте фокусное расстояние для (n = 0; n <temparray.length; n ++) {stringtemp = temparray [n]; if (temparray [n] == "focallength") {focallength = temparray [n+1];}} // iso setting для (n = 0; n <temparray.length; stringTemp = temparray [n]; if (stringtemp.indexof ("isospeedRatings")! =-1) {isospeedRatings = ", iso"+temparray [n+5]; break;}} // Использовать тип объектива для (n = 0; n <temparray.length; n ++) {stringTemp = temparray [n]; if (temparray [n] == "lens") {lens = temparray [n+1]; Break;}} // Производитель камеры для (n = 0; n <temparray.length; n ++) {stringtemp = temparray [n]; if (stringtemp.indexof ("make")! =-1) {make = temparray [n+1]; Break;}} // Модель камеры для (n = 0; n <temparray.length; n ++) {stringtemp = temparray [n]; if (stringtemp.indexof ("model")! =-1) {var model = temparray [n+1]; Break;}} // Для некоторых моделей камеры не включайте часть производителя // Camera = Make+Model; // для некоторых моделей камеры включайте камеру части производителя = модель; // Владелец камеры для (n = 0; n <temparray.length; n ++) {stringtemp = temparray [n]; if (stringtemp.indexof ("creator")! =-1 && creator == ") {creator = temparray [n+5]; Break;}} // Проверьте скорость затвора datearray1 = 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;} // Рассчитайте размер Aperture DateArrake1 = fnumber. datearray1 [0]; j = datearray1 [1]; if (j> 1) fnumber = i/j; elsefnumber = i; // преобразовать компенсацию воздействия в десятичный datearray1 = exprousebiasvalue.split ("/"); i = datearray1 [0]; j = datearray1 [1]; Десятичная точка, Just *100/100, сохранить 1 цифры, только *10/10 // Удерживает здесь 2 цифры, 20D не может иметь этих двух строк, если (ExprososureBiasValue! = 0) ExpusosureBiasValue = parseInt (ExpusiOsBiasValue *100)/100; if (exprosobiasvalue> 0) Exprovirowevue = exprovifure Progradue/exprovirofeue = "+" IF (ExprovirowBiasValue> 0) Exproviroweue = "+" IF (ExprovirowbiaSValue> 0). Exprososuroprogramarray = [«Не определено», «ручное», «нормальная программа», «приоритет апертуры», «Приоритет затвора», «Творческая программа», «Программа действий», «Режим портрета», «Режим ландшафта»]; Запускается; if (datearray1.indexof ("true")! =-1) formed = "flashon"; elsefired = "flashoff"; // Проверка фокусной длины datearray1 = фокусировка. datetimeoriginal.split ("t"); phodate = datearray1 [0]; photime = datearray1 [1]; datearray2 = phodate.split ("-"); meshoreArray = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"]; phodate = datearray2 [0]+"-"+modaysarray [datearray2 [1] -1]+"-"+datearray2 [2]; datearray2 = photime.split ("+"); photime = datearray2 [0]; // Если у вас есть лиза, просто измените его в соответствии с объектом и максимальной фокусной расстоянием, если (Lens! {if (lens.indexof ("17.0-40,0 мм")! =-1) линс = "Canon 17-40 мм f4l usm"; } // Если нет информации о объективах, используйте исходный метод для сравнения else {var foclength = parseint (focallength); линзасин = "18-55 мм 1: 3,5-5,6G"; // if (foclength> = 17 && foclength <= 40) // линзы = "nikon"; // if (foclength> = 70 && foclength <= 200) // lensuss = "nikon"; // if (foclength == "85") // lensused = "nikon"; // if (foclength == "100") // lenssused = "nikon"; } // рисовать линии и коробки // Определить черный, вы также можете определить другие цвета black = new SolidColor (); black.rgb.red = black.rgb.green = black.rgb.blue = 0; // определить белый, вы также можете определить другие цвета белые = new SolidColor (); White.rgb.red = White.rgb.green = White.rgb.blue = 255; // Определить серый, вы также можете определить другие цвета Grey = new SolidColor (); grey.rgb.red = grey.rgb.green = grey.rgb.blue = 50; // Добавить белую линию fosticcolor = белый; // Если изменяется на черную линию // founalcolor = black; // Ширина и узкая белая линия установлена на 2 или 4, с обеих сторон фактическая ширина делится на 2AD.ResizeCanvas (ad.width.value+2, ad.height.value+2, Anchorposition.middlecenter); // Добавить серую раму // founalcolor = grey; // Добавить черную кадр фоновое количество = черное; // Если изменено на белый кадр // founalcolor = white; // Ширина и высота границы, здесь установили ширину и узкую черную раму на 1/40 ширины изображения, и с обеих сторон фактическая ширина делится на 2fwidth = parseint (photowidth/40); fhight = parseint (photowidth/40); // Добавить Ad.resizecanvas (ad.width.value+fwidth, ad.height.value+fhight, archorposition.middlecenter); // Добавить точку расширения внизу, чтобы облегчить написание ad.resizecanvas (ad.width.value, ad.height.value+fhight+fhight, anchorposition.topcenter); // стандартные и параметры namelayer = ad.artlayers.add (); namelayer.kind = layerkind.text; Tn = namelayer.textitem; Tn.contents = creator; // шрифт авторских прав, размер шрифта, цвет и жирный жирный цвет и т. Д. Tn.font = "stxingkai"; // Право выровненное tn.justification = reyfication.right; // размер шрифта tsize = parseint ((fwidth+10)/2); // шрифт левый края и нижний край tleft = photowidth; thight = photohight-fhight+tsize; // положение маркера tn.position = [tleft, thight]; Tn.color = белый; // Если это белая рама, шрифт черный //tn.color = black; Tn.fauxbold = true; InfoLayer = ad.Artlayers.Add (); Infolayer.kind = layerkind.text; Ti = infoLayer.textItem; // Право выравнивано, если она остается выровненной, следующая строка может быть опущена ti.justification = Обоснование. "+Линс -линс+" @"+focallength+" mm, "+exposuretime+" sec, f/"; ti.contents = ti.contents+fnumber+", ev "+exprososurebiasvalue+isospeedratings; // Если вы не заинтересованы в программах воздействия, пожалуйста, удалите следующую строку. "+увольнение; ti.contents = ti.contents+"/u000d "+phodate+" "+phote; // шрифт, размер шрифта, цвет и т. Д. ti.font =" Bold "; //Ti.font = "arial"; Ti.size = tsize; Ti.color = белый; // Если это белая коробка, шрифт черный // ti.color = black; Ti.fauxbold = true; ad.flatten (); // -------------