如何在扫描t图片时自动加载初始化失败EXIF信息

页面导航:
→ 正文内容 PhotoShop自动添加边框及EXIF信息
PhotoShop给图片自动添加边框及EXIF信息的JS脚本
这篇文章主要介绍了PhotoShop给图片自动添加边框及EXIF信息的JS脚本,本文给出效果图和实现代码,需要的朋友可以参考下
作为一名“摄影爱好者”(好吧我承认我不太合格,我才玩摄影没几天-_-!!)总有一件事情避免不了,就是让照片带上EXIF的参数,虽然本人的部落格已经安装了插件可以显示出EXIF信息,但是感觉插件还是不太给力,此外还要考虑到一些综合的操作,比如批量的调整大小,增加版权信息等等。
当然,好在我们还要PS,我们还可以写PS的脚本让他来按照我们的想法来进行某些操作:)嘿嘿,从无忌论坛的一个帖子找到了一个PS脚本,按照自己的想法略加了一些修改(主要是时间,镜头识别,以及焦距识别)效果图见题图。有了脚本就方便许多了,比如你想要批量的增加EXIF边框,那么很简单,录制个动作,然后批处理运行这个动作就好啦:)
最后,附上这个脚本:
displayDialogs = DialogModes.NO;
var defaultRulerUnits = preferences.rulerU
preferences.rulerUnits = Units.PIXELS;
//将一个长字串分解成单个字符串
function explodeArray(item) {
var Count=0;
var tempString=new String(item);
tempArray=new Array(1);
i=tempString.indexOf(":");
tempString=tempString.substr(i+1,tempString.length-i-1);
i=tempString.indexOf("&");
tempArray[Count]=tempString.substr(0,i);
tempString=tempString.substr(i+1,tempString.length-i-1);
i=tempString.indexOf("&");
tempArray[Count]=tempString.substr(0,i);
tempString=tempString.substr(i-1,tempString.length-i+1);
}while (tempString.indexOf("&/x:xmpmeta&")&0);
tempArray[Count]=tempS
return tempA
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="";
var dateTimeOriginal=""; //拍摄时间
var exposureBiasValue=""; //曝光补偿
var exposureProgram="";
//曝光程序模式
var fired="";
//闪光模式
//改成你自己想写的,比如版权所有和你自己的网名等
//如果为空,将采用相机设置的名字
var creator="Photo By Kaisir"; //拍摄者
AD = activeD
//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.
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/pR
if(resRatio!=1){
AD.resizeImage(AD.width.value,AD.height.value,pResulotion);
photoWidth = AD.width.
photoHight = AD.height.
//获取RAW保存的信息
exifData = AD.xmpMetadata.rawData.toString();
//将EXIF信息分成单个的相关信息
explodeArray(exifData);
//Photoshop CS获取EXIF信息
//快门速度
for(n = 0; n & tempArray. n ++)
stringTemp=tempArray[n];
if(stringTemp.indexOf("ExposureTime")!=-1)
exposureTime = tempArray[n+1];
//光圈大小
for(n = 0; n & tempArray. n ++) {
stringTemp=tempArray[n];
if(stringTemp.indexOf("FNumber")!=-1){
fNumber = tempArray[n+1];
//曝光程序模式
for(n = 0; n & tempArray. n ++) {
stringTemp=tempArray[n];
if(stringTemp.indexOf("ExposureProgram")!=-1){
exposureProgram = tempArray[n+1];
//曝光补偿
for(n = 0; n & tempArray. n ++) {
stringTemp=tempArray[n];
if(stringTemp.indexOf("ExposureBiasValue")!=-1){
exposureBiasValue = tempArray[n+1];
//闪光模式
for(n = 0; n & tempArray. n ++) {
stringTemp=tempArray[n];
if(stringTemp.indexOf("Fired")!=-1){
fired = tempArray[n+1];
//拍摄日期、时间
for(n = 0; n & tempArray. n ++) {
stringTemp=tempArray[n];
if(stringTemp.indexOf("DateTimeOriginal")!=-1){
dateTimeOriginal = tempArray[n+1];
//使用焦距
for(n = 0; n & tempArray. n ++) {
stringTemp=tempArray[n];
if(tempArray[n]=="FocalLength"){
focalLength = tempArray[n+1];
for(n = 0; n & tempArray. n ++) {
stringTemp=tempArray[n];
if(stringTemp.indexOf("ISOSpeedRatings")!=-1){
ISOSpeedRatings = ", ISO "+tempArray[n+5];
//使用镜头类型
for(n = 0; n & tempArray. n ++) {
stringTemp=tempArray[n];
if(tempArray[n]=="Lens"){
lens=tempArray[n+1];
//相机厂商
for(n = 0; n & tempArray. n ++) {
stringTemp=tempArray[n];
if(stringTemp.indexOf("Make")!=-1){
make = tempArray[n+1];
//相机型号
for(n = 0; n & tempArray. n ++) {
stringTemp=tempArray[n];
if(stringTemp.indexOf("Model")!=-1){
var model = tempArray[n+1];
//对于有的相机型号不包括制造商部分
//camera = make+
//对于有的相机型号包括制造商部分
//相机所有者
for(n = 0; n & tempArray. n ++) {
stringTemp=tempArray[n];
if(stringTemp.indexOf("creator")!=-1 && creator==""){
creator = tempArray[n+5];
//检查快门速度
dateArray1 = exposureTime.split("/");
j = dateArray1[0];
i = dateArray1[1];
if(j/i&=1)
exposureTime=parseInt(j/i)+"."+(j-parseInt(j/i)*i);
i=parseInt(i/j);
exposureTime=j+"/"+i;
//计算光圈大小
dateArray1 = fNumber.split("/");
i = dateArray1[0];
j = dateArray1[1];
fNumber=i/j;
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="+"+exposureBiasV
//确定曝光程序模式
exposureProgramArray = ["未定义",
"Normal Program",
"Aperture Priority",
"Shutter Priority",
"Creative Program",
"Action Program",
"Portrait Mode",
"Landscape Mode"];
exposureProgram = exposureProgramArray[exposureProgram];
//检查闪光模式
dateArray1 =
if(dateArray1.indexOf("True")!=-1)
fired="FlashOn";
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",
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";
//如果没有镜头信息,就使用原来的办法比较
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 =
//如果改为黑线
//backgroundColor =
//白线宽窄设为2或4,两边,实际宽度除以2
AD.resizeCanvas(AD.width.value+2,AD.height.value+2,AnchorPosition.MIDDLECENTER);
//加入灰框
//backgroundColor =
//加入黑框
backgroundColor =
//如果改为白框
//backgroundColor =
//边框宽度和高度,这里将黑框宽窄设为图片宽度的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.textI
TN.contents =
//版权字体、字号、颜色和加粗等
TN.font = "STXingkai";
TN.justification = Justification.RIGHT;
tSize = parseInt((fWidth+10)/2);
//字体左边距和下边距
tLeft = photoW
tHight = photoHight-fHight+tS
//标字的位置
TN.position = [tLeft,tHight];
TN.size = tSize+4;
TN.color =
//如果为白框,字体为黑色
//TN.color =
TN.fauxBold =
infoLayer = AD.artLayers.add();
infoLayer.kind = LayerKind.TEXT;
TI = infoLayer.textI
//右对齐,如果左对齐可以省略下面这行
TI.justification = Justification.RIGHT;
tHight = photoHight+fHight+tS
//标字的位置
TI.position = [tLeft,tHight];
//显示:相机型号,镜头,焦距,曝光时间,光圈,ISO设置,拍摄日期等
TI.contents = camera+", "+lensUsed+" @"+focalLength+"mm,"+exposureTime+"Sec,F/";
TI.contents = TI.contents+fNumber+", EV "+exposureBiasValue+ISOSpeedR
//如果对曝光程式不感兴趣,请去掉下面行
TI.contents = TI.contents+", "+exposureProgram+", "+
TI.contents = TI.contents+"\u000D"+phoDate+" "+phoT
//字体、字号、颜色等
TI.font = "黑体";
//TI.font = "Arial";
TI.size = tS
TI.color =
//如果为白框,字体为黑色
//TI.color =
TI.fauxBold =
AD.flatten();
//-------------
您可能感兴趣的文章:
上一篇:下一篇:
最 近 更 新
热 点 排 行
12345678910

我要回帖

更多关于 listview自动加载更多 的文章

 

随机推荐