欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PhotoShop給圖片自動(dòng)添加邊框及EXIF信息的JS腳本

 更新時(shí)間:2015年02月15日 09:49:32   投稿:junjie  
這篇文章主要介紹了PhotoShop給圖片自動(dòng)添加邊框及EXIF信息的JS腳本,本文給出效果圖和實(shí)現(xiàn)代碼,需要的朋友可以參考下

作為一名“攝影愛好者”(好吧我承認(rèn)我不太合格,我才玩攝影沒幾天-_-!!)總有一件事情避免不了,就是讓照片帶上EXIF的參數(shù),雖然本人的部落格已經(jīng)安裝了插件可以顯示出EXIF信息,但是感覺插件還是不太給力,此外還要考慮到一些綜合的操作,比如批量的調(diào)整大小,增加版權(quán)信息等等。

當(dāng)然,好在我們還要PS,我們還可以寫PS的腳本讓他來按照我們的想法來進(jìn)行某些操作:)嘿嘿,從無忌論壇的一個(gè)帖子找到了一個(gè)PS腳本,按照自己的想法略加了一些修改(主要是時(shí)間,鏡頭識(shí)別,以及焦距識(shí)別)效果圖見題圖。有了腳本就方便許多了,比如你想要批量的增加EXIF邊框,那么很簡單,錄制個(gè)動(dòng)作,然后批處理運(yùn)行這個(gè)動(dòng)作就好啦:)

最后,附上這個(gè)腳本:

displayDialogs = DialogModes.NO; 
var defaultRulerUnits = preferences.rulerUnits; 
preferences.rulerUnits = Units.PIXELS; 

//將一個(gè)長字串分解成單個(gè)字符串
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="";		//臨時(shí)字串
var make="";			//相機(jī)公司
var model="";			//相機(jī)型號(hào)
var camera="";			//相機(jī)
var lens="";			//鏡頭類型
var lensUsed="";		//使用的鏡頭
var focalLength=""; 		//焦距
var exposureTime=""; 		//快門
var fNumber="";			//光圈
var ISOSpeedRatings="";		//ISO設(shè)置
var dateTimeOriginal="";	//拍攝時(shí)間
var exposureBiasValue="";	//曝光補(bǔ)償
var exposureProgram="";		//曝光程序模式
var fired=""; 			//閃光模式
//改成你自己想寫的,比如版權(quán)所有和你自己的網(wǎng)名等
//如果為空,將采用相機(jī)設(shè)置的名字

var creator="Photo By Kaisir";	//拍攝者


AD = activeDocument; 

//Aglin 編制了自動(dòng)改變圖象大小為網(wǎng)上交流大小的代碼,
//稍加修改,如果寬窄任一邊大于1000,就自動(dòng)剪裁
//這里最長邊為750,最短邊為500
//請根據(jù)自己相機(jī)拍出來的圖像比例設(shè)置長寬比
//如果不用可以去掉
//--------------------------------------------
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信息分成單個(gè)的相關(guān)信息
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;
	} 
}

//曝光補(bǔ)償
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;
	} 
}

//拍攝日期、時(shí)間
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設(shè)置
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;
	} 
}


//相機(jī)廠商
for(n = 0; n < tempArray.length; n ++) { 
	stringTemp=tempArray[n];
	if(stringTemp.indexOf("Make")!=-1){ 
		make = tempArray[n+1]; 
		break;
	} 
}

//相機(jī)型號(hào)
for(n = 0; n < tempArray.length; n ++) { 
	stringTemp=tempArray[n];
	if(stringTemp.indexOf("Model")!=-1){ 
		var model = tempArray[n+1]; 
		break;
	} 
}
//對于有的相機(jī)型號(hào)不包括制造商部分
//camera = make+model; 
//對于有的相機(jī)型號(hào)包括制造商部分
camera = model; 

//相機(jī)所有者
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;
}

//計(jì)算光圈大小
dateArray1 = fNumber.split("/");
i = dateArray1[0];
j = dateArray1[1];
if(j>1)
	fNumber=i/j;
else
	fNumber=i;

//曝光補(bǔ)償換算成小數(shù)
dateArray1 = exposureBiasValue.split("/");
i = dateArray1[0];
j = dateArray1[1];
exposureBiasValue=i/j;

//小數(shù)點(diǎn)后面保留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";
else
	fired="FlashOff";


//檢查焦距
dateArray1 = focalLength.split("/");
i = dateArray1[0];
j = dateArray1[1];

focalLength=parseInt(i/j);




//改變?nèi)掌诟袷?
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];

//你有什么鏡頭,就根據(jù)鏡頭和最大焦距改吧

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; 

//白線寬窄設(shè)為2或4,兩邊,實(shí)際寬度除以2
AD.resizeCanvas(AD.width.value+2,AD.height.value+2,AnchorPosition.MIDDLECENTER); 

//加入灰框
//backgroundColor = grey; 

//加入黑框
backgroundColor = black; 

//如果改為白框
//backgroundColor = white; 

//邊框?qū)挾群透叨?這里將黑框?qū)捳O(shè)為圖片寬度的1/40,兩邊,實(shí)際寬度再除以2
fWidth = parseInt(photoWidth/40);
fHight = parseInt(photoWidth/40);

//加框
AD.resizeCanvas(AD.width.value+fWidth,AD.height.value+fHight, AnchorPosition.MIDDLECENTER); 

//底部再加寬點(diǎn),便于寫字
AD.resizeCanvas(AD.width.value,AD.height.value+fHight+fHight+fHight,AnchorPosition.TOPCENTER); 


//標(biāo)字和參數(shù) 
nameLayer = AD.artLayers.add(); 
nameLayer.kind = LayerKind.TEXT; 
TN = nameLayer.textItem; 

TN.contents = creator;

//版權(quán)字體、字號(hào)、顏色和加粗等 
TN.font = "STXingkai"; 

//右對齊
TN.justification = Justification.RIGHT;

//字號(hào)
tSize = parseInt((fWidth+10)/2);

//字體左邊距和下邊距
tLeft = photoWidth;
tHight = photoHight-fHight+tSize;

//標(biāo)字的位置
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;

//標(biāo)字的位置
TI.position = [tLeft,tHight];

//顯示:相機(jī)型號(hào),鏡頭,焦距,曝光時(shí)間,光圈,ISO設(shè)置,拍攝日期等

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;

//字體、字號(hào)、顏色等 
TI.font = "黑體"; 
//TI.font = "Arial"; 

TI.size = tSize; 
TI.color = white; 

//如果為白框,字體為黑色
//TI.color = black; 

TI.fauxBold = true;

AD.flatten(); 

//-------------

相關(guān)文章

  • JavaScript隱式類型轉(zhuǎn)換

    JavaScript隱式類型轉(zhuǎn)換

    JavaScript的數(shù)據(jù)類型是非常弱的(不然不會(huì)叫它做弱類型語言了)!在使用算術(shù)運(yùn)算符時(shí),運(yùn)算符兩邊的數(shù)據(jù)類型可以是任意的,比如,一個(gè)字符串可以和數(shù)字相加
    2016-03-03
  • newxtree.js代碼

    newxtree.js代碼

    newxtree.js代碼...
    2007-03-03
  • js的offsetleft屬性的用法小結(jié)

    js的offsetleft屬性的用法小結(jié)

    本文主要介紹了js的offsetleft屬性的用法小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • js CSS操作方法集合

    js CSS操作方法集合

    用js實(shí)現(xiàn)的對css的一些操作方法,集合,方便需要用js控制css的朋友
    2008-10-10
  • javascript iFrame研究

    javascript iFrame研究

    iFrame小應(yīng)用
    2008-12-12
  • layui之select的option疊加問題的解決方法

    layui之select的option疊加問題的解決方法

    下面小編就為大家分享一篇layui之select的option疊加問題的解決方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • 微信小程序?qū)崿F(xiàn)多個(gè)按鈕的顏色狀態(tài)轉(zhuǎn)換

    微信小程序?qū)崿F(xiàn)多個(gè)按鈕的顏色狀態(tài)轉(zhuǎn)換

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)多個(gè)按鈕的顏色狀態(tài)轉(zhuǎn)換,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • JavaScript中交換值的10種方法總結(jié)

    JavaScript中交換值的10種方法總結(jié)

    這篇文章主要給大家總結(jié)介紹了JavaScript中交換值的10種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用JavaScript具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • js+html+css實(shí)現(xiàn)簡單電子時(shí)鐘

    js+html+css實(shí)現(xiàn)簡單電子時(shí)鐘

    這篇文章主要為大家詳細(xì)介紹了js+html+css實(shí)現(xiàn)簡單電子時(shí)鐘,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 在bootstrap中實(shí)現(xiàn)輪播圖實(shí)例代碼

    在bootstrap中實(shí)現(xiàn)輪播圖實(shí)例代碼

    Bootstrap中輪播圖插件叫作Carousel ,下面通過本文給大家詳細(xì)介紹了bootstrop中實(shí)現(xiàn)輪播圖效果,需要的朋友參考下
    2017-06-06

最新評(píng)論