作為一名“攝影愛好者”(好吧我承認我不太合格,我才玩攝影沒幾天-_-!!)總有一件事情避免不了,就是讓照片帶上EXIF的參數,雖然本人的部落格已經安裝了插件可以顯示出EXIF信息,但是感覺插件還是不太給力,此外還要考慮到一些綜合的操作,比如批量的調整大小,增加版權信息等等。
當然,好在我們還要PS,我們還可以寫PS的腳本讓他來按照我們的想法來進行某些操作:)嘿嘿,從無忌論壇的一個帖子找到了一個PS腳本,按照自己的想法略加了一些修改(主要是時間,鏡頭識別,以及焦距識別)效果圖見題圖。有了腳本就方便許多了,比如你想要批量的增加EXIF邊框,那麼很簡單,錄製個動作,然後批處理運行這個動作就好啦:)
最後,附上這個腳本:
displayDialogs = DialogModes.NO; var defaultRulerUnits = preferences.rulerUnits; preferences.rulerUnits = Units.PIXELS; //將一個長字串分解成單個字符串function explodeArray(item) { var i=0;var Count=0; var tempString=new String(item); tempArray=new Array(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; return tempArray; } var i=0;var j=0;var k=0;var pResulotion=72;var AD="";var resRatio="";var imageRatio="";var dateArray1="";var dateArray2="";var monthsArray="";var exposureProgramArray="";var phoDate="";var phoTime="";var photoWidth="";var 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 make="";//相機公司var model="";//相機型號var camera="";//相機var lens="";//鏡頭類型var lensUsed="";//使用的鏡頭var focalLength=""; //焦距var exposureTime=""; //快門var fNumber="";//光圈var ISOSpeedRatings="";//ISO設置var dateTimeOriginal="";//拍攝時間var exposureBiasValue="";//曝光補償var exposureProgram="";//曝光程序模式var fired=""; //閃光模式//改成你自己想寫的,比如版權所有和你自己的網名等//如果為空,將採用相機設置的名字var creator="Photo By Kaisir";//拍攝者AD = activeDocument; //Aglin 編制了自動改變圖像大小為網上交流大小的代碼,//稍加修改,如果寬窄任一邊大於1000,就自動剪裁//這裡最長邊為750,最短邊為500//請根據自己相機拍出來的圖像比例設置長寬比//如果不用可以去掉//--------------------------------------------var resizeMax=1024;var resizeMin=678;if(AD.width.value > 1500 || AD.height.value > 1500) {imageRatio = AD.width.value/AD.height.value;if(imageRatio>1)AD.resizeImage(resizeMax,resizeMin,pResulotion,ResampleMethod.BICUBICSHARPER); if(imageRatio==1)AD.resizeImage(resizeMax,resizeMax,pResulotion,ResampleMethod.BICUBICSHARPER); if(imageRatio<1)AD.resizeImage(resizeMin,resizeMax,pResulotion,ResampleMethod.BICUBICSHARPER); }//--------------------------------------------resRatio = AD.resolution/pResulotion; if(resRatio!=1){ AD.resizeImage(AD.width.value,AD.height.value,pResulotion); } photoWidth = AD.width.value; photoHight = AD.height.value; //獲取RAW保存的信息exifData = AD.xmpMetadata.rawData.toString();//將EXIF信息分成單個的相關信息explodeArray(exifData); //Photoshop CS獲取EXIF信息//快門速度for(n = 0; n < tempArray.length; n ++) { stringTemp=tempArray[n];if(stringTemp.indexOf("ExposureTime")!=-1){ exposureTime = tempArray[n+1]; break;} }//光圈大小for(n = 0; n < tempArray.length; n ++) { stringTemp=tempArray[n];if(stringTemp.indexOf("FNumber")!=-1){ fNumber = tempArray[n+1];break;} }//曝光程序模式for(n = 0; n < tempArray.length; n ++) { stringTemp=tempArray[n];if(stringTemp.indexOf("ExposureProgram")!=-1){ exposureProgram = tempArray[n+1]; break;} }//曝光補償for(n = 0; n < tempArray.length; n ++) { stringTemp=tempArray[n];if(stringTemp.indexOf("ExposureBiasValue")!=-1){ exposureBiasValue = tempArray[n+1]; break;} }//閃光模式for(n = 0; n < tempArray.length; n ++) { stringTemp=tempArray[n];if(stringTemp.indexOf("Fired")!=-1){ fired = tempArray[n+1]; break;} }//拍攝日期、時間for(n = 0; n < tempArray.length; n ++) { stringTemp=tempArray[n];if(stringTemp.indexOf("DateTimeOriginal")!=-1){ dateTimeOriginal = tempArray[n+1]; break;} }//使用焦距for(n = 0; n < tempArray.length; n ++) { stringTemp=tempArray[n];if(tempArray[n]=="FocalLength"){ focalLength = tempArray[n+1];break;} }//ISO設置for(n = 0; n < tempArray.length; n ++) { stringTemp=tempArray[n];if(stringTemp.indexOf("ISOSpeedRatings")!=-1){ ISOSpeedRatings = ", ISO "+tempArray[n+5]; break;} }//使用鏡頭類型for(n = 0; n < tempArray.length; n ++) { stringTemp=tempArray[n];if(tempArray[n]=="Lens"){ lens=tempArray[n+1]; break;} }//相機廠商for(n = 0; n < tempArray.length; n ++) { stringTemp=tempArray[n];if(stringTemp.indexOf("Make")!=-1){ make = tempArray[n+1]; break;} }//相機型號for(n = 0; n < tempArray.length; n ++) { stringTemp=tempArray[n];if(stringTemp.indexOf("Model")!=-1){ var model = tempArray[n+1]; break;} }//對於有的相機型號不包括製造商部分//camera = make+model; //對於有的相機型號包括製造商部分camera = model; //相機所有者for(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;}//計算光圈大小dateArray1 = fNumber.split("/");i = dateArray1[0];j = dateArray1[1];if(j>1)fNumber=i/j;elsefNumber=i;//曝光補償換算成小數dateArray1 = exposureBiasValue.split("/");i = dateArray1[0];j = dateArray1[1];exposureBiasValue=i/j;//小數點後面保留2位,就*100/100,保留一位,就*10/10//這裡保留了2位,20D可以不要這兩行if(exposureBiasValue!=0)exposureBiasValue=parseInt(exposureBiasValue*100)/100;if (exposureBiasValue > 0)exposureBiasValue="+"+exposureBiasValue;//確定曝光程序模式exposureProgramArray = ["未定義","Manual","Normal Program","Aperture Priority","Shutter Priority","Creative Program","Action Program","Portrait Mode","Landscape Mode"];exposureProgram = exposureProgramArray[exposureProgram];//檢查閃光模式dateArray1 = fired;if(dateArray1.indexOf("True")!=-1)fired="FlashOn";elsefired="FlashOff";//檢查焦距dateArray1 = focalLength.split("/");i = dateArray1[0];j = dateArray1[1];focalLength=parseInt(i/j);//改變日期格式dateArray1 = dateTimeOriginal.split("T"); phoDate = dateArray1[0];phoTime = dateArray1[1];dateArray2 = phoDate.split("-"); monthsArray =["1", "2", "3", "4", "5","6", "7", "8", "9", "10", "11", "12"]; phoDate = dateArray2[0]+"-"+monthsArray[dateArray2[1]-1]+"-"+dateArray2[2];dateArray2 = phoTime.split("+");phoTime = dateArray2[0];//你有什麼鏡頭,就根據鏡頭和最大焦距改吧if(lens != "") {if(lens.indexOf("17.0-40.0 mm")!=-1)lensUsed = "Canon 17-40mm F4L USM"; }//如果沒有鏡頭信息,就使用原來的辦法比較else {var focLength=parseInt(focalLength);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"; }//畫線和框//定義黑色,你也可以定義其他顏色喲black = new SolidColor(); black.rgb.red = black.rgb.green = black.rgb.blue = 0; //定義白色,你也可以定義其他顏色喲white = 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; //加入一條白線backgroundColor = white; //如果改為黑線//backgroundColor = black; //白線寬窄設為2或4,兩邊,實際寬度除以2AD.resizeCanvas(AD.width.value+2,AD.height.value+2,AnchorPosition.MIDDLECENTER); //加入灰框//backgroundColor = grey; //加入黑框backgroundColor = black; //如果改為白框//backgroundColor = white; //邊框寬度和高度,這裡將黑框寬窄設為圖片寬度的1/40,兩邊,實際寬度再除以2fWidth = parseInt(photoWidth/40);fHight = parseInt(photoWidth/40);//加框AD.resizeCanvas(AD.width.value+fWidth,AD.height.value+fHight, AnchorPosition.MIDDLECENTER); //底部再加寬點,便於寫字AD.resizeCanvas(AD.width.value,AD.height.value+fHight+fHight+fHight,AnchorPosition.TOPCENTER); //標字和參數nameLayer = AD.artLayers.add(); nameLayer.kind = LayerKind.TEXT; TN = nameLayer.textItem; TN.contents = creator;//版權字體、字號、顏色和加粗等TN.font = "STXingkai"; //右對齊TN.justification = Justification.RIGHT;//字號tSize = parseInt((fWidth+10)/2);//字體左邊距和下邊距tLeft = photoWidth;tHight = photoHight-fHight+tSize;//標字的位置TN.position = [tLeft,tHight];TN.size = tSize+4; TN.color = white; //如果為白框,字體為黑色//TN.color = black; TN.fauxBold = true; infoLayer = AD.artLayers.add(); infoLayer.kind = LayerKind.TEXT; TI = infoLayer.textItem; //右對齊,如果左對齊可以省略下面這行TI.justification = Justification.RIGHT;tHight = photoHight+fHight+tSize;//標字的位置TI.position = [tLeft,tHight];//顯示:相機型號,鏡頭,焦距,曝光時間,光圈,ISO設置,拍攝日期等TI.contents = camera+", "+lensUsed+" @"+focalLength+"mm,"+exposureTime+"Sec,F/";TI.contents = TI.contents+fNumber+", EV "+exposureBiasValue+ISOSpeedRatings;//如果對曝光程式不感興趣,請去掉下面行TI.contents = TI.contents+", "+exposureProgram+", "+fired;TI.contents = TI.contents+"/u000D"+phoDate+" "+phoTime;//字體、字號、顏色等TI.font = "黑體"; //TI.font = "Arial"; TI.size = tSize; TI.color = white; //如果為白框,字體為黑色//TI.color = black; TI.fauxBold = true;AD.flatten(); //-------------