首页 web前端 js教程 PhotoShop给图片自动添加边框及EXIF信息的JS脚本_javascript技巧

PhotoShop给图片自动添加边框及EXIF信息的JS脚本_javascript技巧

May 16, 2016 pm 04:13 PM
exif信息 js脚本 photoshop 图片

作为一名“摄影爱好者”(好吧我承认我不太合格,我才玩摄影没几天-_-!!)总有一件事情避免不了,就是让照片带上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;
else
	fNumber=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";
else
	fired="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,两边,实际宽度除以2
AD.resizeCanvas(AD.width.value+2,AD.height.value+2,AnchorPosition.MIDDLECENTER); 

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

//加入黑框
backgroundColor = black; 

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

//边框宽度和高度,这里将黑框宽窄设为图片宽度的1/40,两边,实际宽度再除以2
fWidth = 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(); 

//-------------
登录后复制

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

小红书发布自动保存图片怎么解决?发布自动保存图片在哪里? 小红书发布自动保存图片怎么解决?发布自动保存图片在哪里? Mar 22, 2024 am 08:06 AM

随着社交媒体的不断发展,小红书已经成为越来越多年轻人分享生活、发现美好事物的平台。许多用户在发布图片时遇到了自动保存的问题,这让他们感到十分困扰。那么,如何解决这个问题呢?一、小红书发布自动保存图片怎么解决?1.清除缓存首先,我们可以尝试清除小红书的缓存数据。步骤如下:(1)打开小红书,点击右下角的“我的”按钮;(2)在个人中心页面,找到“设置”并点击;(3)向下滚动,找到“清除缓存”选项,点击确认。清除缓存后,重新进入小红书,尝试发布图片看是否解决了自动保存的问题。2.更新小红书版本确保你的小

抖音评论里怎么发图片?评论区图片入口在哪里? 抖音评论里怎么发图片?评论区图片入口在哪里? Mar 21, 2024 pm 09:12 PM

随着抖音短视频的火爆,用户们在评论区互动变得更加丰富多彩。有些用户希望在评论中分享图片,以更好地表达自己的观点或情感。那么,抖音评论里怎么发图片呢?本文将为你详细解答这个问题,并为你提供一些相关的技巧和注意事项。一、抖音评论里怎么发图片?1.打开抖音:首先,你需要打开抖音APP,并登录你的账号。2.找到评论区:在浏览或发布短视频时,找到想要评论的地方,点击“评论”按钮。3.输入评论内容:在评论区输入你的评论内容。4.选择发送图片:在输入评论内容的界面,你会看到一个“图片”按钮或者“+”号按钮,点

在 iPhone 上使图片更清晰的 6 种方法 在 iPhone 上使图片更清晰的 6 种方法 Mar 04, 2024 pm 06:25 PM

Apple最近的iPhone可以通过清晰的细节、饱和度和亮度来捕捉回忆。但有时,您可能会遇到一些问题,这些问题可能会导致图像看起来不那么清晰。尽管iPhone相机上的自动对焦已经取得了长足的进步,可以让您快速拍照,但相机在某些情况下可能会错误地对焦错误的拍摄对象,从而使照片在不需要的区域更加模糊。如果iPhone上的照片看起来失焦或总体上缺乏清晰度,以下帖子应该可以帮助您使它们更清晰。如何在iPhone上使图片更清晰[6种方法]您可以尝试使用本机的“照片”应用来清理照片。如果您需要更多功能和选项

ppt怎么让图片一张一张出来 ppt怎么让图片一张一张出来 Mar 25, 2024 pm 04:00 PM

在PowerPoint中,让图片逐一显示是一种常用的技巧,可以通过设置动画效果来实现。本指南详细介绍了实现这一技巧的步骤,包括基本设置、图片插入、添加动画、调整动画顺序和时间。此外,还提供了高级设置和调整,例如使用触发器、调整动画速度和顺序,以及预览动画效果。通过遵循这些步骤和技巧,用户可以轻松地在PowerPoint中设置图片逐一出现,从而提升演示文稿的视觉效果并吸引观众的注意力。

福昕PDF阅读器如何将pdf文档转成jpg图片-福昕PDF阅读器将pdf文档转成jpg图片的方法 福昕PDF阅读器如何将pdf文档转成jpg图片-福昕PDF阅读器将pdf文档转成jpg图片的方法 Mar 04, 2024 pm 05:49 PM

你们是不是也在使用福昕PDF阅读器软件呢?那么你们知道福昕PDF阅读器如何将pdf文档转成jpg图片吗?下面这篇文章就为大伙带来了福昕PDF阅读器将pdf文档转成jpg图片的方法,感兴趣的小伙伴们快来下文看看吧。先启动福昕PDF阅读器,接着在顶部工具栏找到“特色功能”,然后选择“PDF转其他”功能。在接下来,打开一个名为“福昕pdf在线转换”的网页。在页面上方右侧点击“登录”按钮进行登录,然后打开“PDF转图片”功能。之后点击上传按钮并将想要转换成图片的pdf文件添加进来,添加完毕后点击“开始转

如何使用 JavaScript 实现图片的拖拽缩放功能? 如何使用 JavaScript 实现图片的拖拽缩放功能? Oct 27, 2023 am 09:39 AM

如何使用JavaScript实现图片的拖拽缩放功能?在现代web开发中,实现图片的拖拽和缩放是常见的需求。通过使用JavaScript,我们可以轻松地为图片添加拖拽和缩放功能,提供更好的用户体验。在本篇文章中,将介绍如何使用JavaScript来实现这一功能,以及附有具体的代码示例。HTML结构首先,我们需要一个基本的HTML结构来展示图片,并为图片添

如何使用HTML、CSS和jQuery实现图片合并展示的高级功能 如何使用HTML、CSS和jQuery实现图片合并展示的高级功能 Oct 27, 2023 pm 04:36 PM

如何使用HTML、CSS和jQuery实现图片合并展示的高级功能概述:在网页设计中,图片展示是一个重要的环节,而图片合并展示是提高页面加载速度和提升用户体验的常用技巧之一。本文将介绍如何使用HTML、CSS和jQuery来实现图片合并展示的高级功能,并提供具体的代码示例。一、HTML布局:首先,我们需要在HTML中创建一个容器来展示合并后的图片。可以使用di

wps文档中两张图片怎么并排 wps文档中两张图片怎么并排 Mar 20, 2024 pm 04:00 PM

在使用wps办公软件时,我们发现不单单只用一种形式,文字里会加入表格和图片,表格里也可以加入图片等等,这些都是兼并使用的,让整个文档的内容看起来更丰富,如果需要在文档中插入两张图片,而且需要并排排列。我们接下来的课程就可以解决这个问题:wps文档中两张图片怎么并排。1、首先需要打开WPS软件,找到你想要调整的图片。左键点击图片会弹出一个菜单栏,选择“页面布局”。2、在文字环绕中选择“紧密型环绕”。3、当需要的图片都确认设定为“紧密型文字环绕”之后,便可以把图片随意拖动到合适的位置,点击第一张图片

See all articles