主题:数码相片Exif边框脚本俱乐部 [主题管理员:头头是道]
正序浏览
主题图片汇总
主题内检索
浏览:197395 回帖:1222
游客没有回帖权限
泡菜
泡网分: 0
主题: 7
帖子: 223
注册: 2005年7月
谢谢靓老虎!
马上修改。
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 30.447
主题: 56
帖子: 2248
注册: 2004年7月
众测俱乐部标识
看了看楼主代码里的检查快门速度:

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;
}

其中,if(j/i>1)要修改为if(j/i>=1),否则1秒曝光会显示成1/1。
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 23.626
主题: 14
帖子: 767
注册: 2004年12月
字体加大
登录后可直接显示原图
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 30.447
主题: 56
帖子: 2248
注册: 2004年7月
众测俱乐部标识
呵呵,又开始讨论这个啦?

这个脚本是“AmazingGrace”在色影无忌首发的,再经“迁飞昆虫”和“aglin”修改(PS CS/CS2 中英文通用),偶再修正了慢速快门错误、增加曝光补偿、增加拍摄模式、增加闪光状态。。。

代码:

//---

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 AD = activeDocument;
var resRatio = AD.resolution/72;

if(resRatio!=1){
AD.resizeImage(AD.width.value,AD.height.value,72);
}

var heightVar = AD.height.value+2;
var photoWidth = AD.width.value;
var photoHight = AD.height.value;

//获取RAW保存的信息
var exifData = AD.xmpMetadata.rawData.toString();

//将EXIF信息分成单个的相关信息
explodeArray(exifData);

var stringTemp="";            //临时字串
var make="";                  //相机公司
var model="";                  //相机型号
var camera="";                  //相机
var lens="";                  //镜头类型
var apertureValue="";            //
var lensUsed="";                       //使用的镜头

var focalLength="";            //焦距
var exposureTime="";            //快门
var fNumber="";                  //光圈
var ISOSpeedRatings="";            //ISO设置
var exposureBiasValue="";             //曝光补偿
var exposureProgram="";               //曝光程序
var Fired="";                             //闪光模式
var dateTimeOriginal="";                 //拍摄时间

//改成你自己想写的,比如版权所有和你自己的网名等
//如果为空,将采用相机设置的名字
var creator="TigerDigi";      //拍摄者

var i=0;
var j=0;
var k=0;
var dateArray1="";
var dateArray2="";
var monthsArray="";
var phoDate = "";
var phoTime = "";

//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("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(stringTemp.indexOf("ExposureBiasValue")!=-1){
exposureBiasValue = 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("Fired")!=-1){
Fired = tempArray[n+1];
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("/");
i = dateArray1[0];
j = dateArray1[1];
if(i/j>=1)
exposureTime=parseInt(i/j)+"."+(i-parseInt(i/j)*j);
else{
j=parseInt(j/i);
i=1;
exposureTime=i+"/"+j;
}

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

//检查焦距
dateArray1 = focalLength.split("/");
i = dateArray1[0];
j = dateArray1[1];
if(j>1)
focalLength=parseInt(i/j);
else
focalLength=i;

//检查曝光补偿
dateArray1 = exposureBiasValue.split("/");
i = dateArray1[0];
j = dateArray1[1];
if(i>0)
exposureBiasValue="+"+(parseInt(i*10/j))/10;
else
exposureBiasValue=(parseInt(i*10/j))/10;

//检查曝光程序
//程序顺序根据相机差异调整
dateArray1= exposureProgram;

dateArray2 = ["Manual",
"Program",
"Aperture",
"Shutter",
"A-DEP"];

exposureProgram = dateArray2[dateArray1-1];

//检查闪光模式
dateArray1 = Fired;
if(dateArray1.indexOf("True")!=-1)
Fired="FlashOn";
else
Fired="FlashOff";

//改变日期格式
dateArray1 = dateTimeOriginal.split("T");

phoDate = dateArray1[0];
phoTime = dateArray1[1];

//日期转换为英文格式(如Jun 22 2005),喜欢可以把注释符号"//"去掉
//dateArray2 = phoDate.split("-");
//monthsArray =["Jan",
//"Feb",
//"Mar",
//"Apr",
//"May",
//"Jun",
//"Jul",
//"Aug",
//"Sep",
//"Oct",
//"Nov",
//"Dec"];
//phoDate = monthsArray[dateArray2[1]-1]+" "+dateArray2[2]+" "+dateArray2[0];

dateArray2 = phoTime.split("+");
phoTime = dateArray2[0];

//你有什么镜头,就根据镜头和最大焦距改吧

if(lens != "")
{

if(lens.indexOf("28.0-70.0 mm")!=-1){
lensUsed = "EF 28-70mm f/2.8L USM";
}
if(lens.indexOf("70.0-200.0 mm")!=-1){
lensUsed = "EF 70-200mm f/2.8L USM";
}
//if(lens.indexOf("85 mm")!=-1){
//lensUsed = "Canon 85mm F1.8 USM";
//}
//if(lens.indexOf("100.0 mm")!=-1){
//lensUsed = "Canon Macro 100mm F2.8 USM";
//}

}
else      
{

//如果没有镜头信息,就使用原来的办法比较

var focLength=parseInt(focalLength);
if(focLength>=28 && focLength<=70){
lensUsed = "EF 28-70mm f/2.8L USM";
}
if(focLength>70 && focLength<=200){
lensUsed = "EF 70-200mm f/2.8L USM";
}
//if(focLength=="85"){
//lensUsed = "Canon 85mm F1.8 USM";
//}
//if(focLength=="100"){
//lensUsed = "Canon Macro 100mm F2.8 USM";
//}
}

//画线和框
//定义黑色,你也可以定义其他颜色哟
var black = new SolidColor();
black.rgb.red = black.rgb.green = black.rgb.blue = 51;

var white = new SolidColor();
white.rgb.red = white.rgb.green = white.rgb.blue = 255;

var grey = new SolidColor();
grey.rgb.red = grey.rgb.green = grey.rgb.blue = 153;

var red = new SolidColor();
red.rgb.red = 255; red.rgb.green = 0; red.rgb.blue = 0;

var yellow = new SolidColor();
yellow.rgb.red = 255; yellow.rgb.green = 153; yellow.rgb.blue = 0;

var blue = new SolidColor();
blue.rgb.red = 0; blue.rgb.green = 0; blue.rgb.blue = 255;

//加入一条白线,你可以将白线宽窄设为2或4,两边,实际宽度除以2
backgroundColor = white;

//如果改为黑线
//backgroundColor = black;

AD.resizeCanvas(AD.width.value+2,AD.height.value+2,
AnchorPosition.MIDDLECENTER);

//加入黑框,这里将黑框宽窄设为图片宽窄的1/10,两边,实际宽度再除以2
backgroundColor = black;

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

//边框宽度和高度
var fWidth = parseInt(photoWidth/60);
var fHight = parseInt(photoHight/40);
//字体左边距和下边距
var tLeft = parseInt(fWidth/2+10);
var tHight = parseInt(fHight/2);
//字号
var tSize = parseInt(fWidth/2);

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

//底部再加宽点,便于写字,这里将下边的边框加倍
AD.resizeCanvas(AD.width.value,AD.height.value+fHight+tHight,AnchorPosition.TOPCENTER);
AD.resizeCanvas(AD.width.value,AD.height.value+fHight+tHight,AnchorPosition.TOPCENTER);
AD.resizeCanvas(AD.width.value,AD.height.value+fHight+tHight,AnchorPosition.TOPCENTER);

//标字和参数

var nameLayer = AD.artLayers.add();
nameLayer.kind = LayerKind.TEXT;
var TI = nameLayer.textItem;

//右对齐
TI.justification = Justification.RIGHT;

//标字的位置
TI.position = [AD.width.value-tLeft,heightVar-tHight];

//标字的位置1
//TI.position = [AD.width.value-tLeft,heightVar+tHight];

TI.contents = "Photo by "+creator;

//字体、字号、颜色和加粗等
TI.font = "Angel";

//TI.font = "宋体";

TI.size = tSize+16;
TI.color = red;

//如果为白框,字体为黑色
//TI.color = black;

TI.fauxBold = true;

var infoLayer = AD.artLayers.add();
infoLayer.kind = LayerKind.TEXT;
var TI = infoLayer.textItem;

//右对齐,如果左对齐可以省略下面这行
TI.justification = Justification.RIGHT;

//标字的位置
TI.position = [AD.width.value-tLeft,heightVar+tHight+tHight+tHight+tHight+tHight];

//显示:相机型号,镜头,焦距,曝光时间,光圈,ISO设置,拍摄日期等

TI.contents = camera+" with "+lensUsed+" @ "+focalLength+"mm "+exposureProgram+" "+exposureTime+"s f/"+fNumber+" "+exposureBiasValue+"EV "+ISOSpeedRatings+" "+Fired+"\u000D"+phoDate+" "+phoTime;

//TI.contents = k+" "+model;

//字体、字号、颜色等
TI.font = "Tahoma";
TI.size = tSize+6;
TI.color = white;

//如果为白框,字体为黑色
//TI.color = black;

AD.flatten();

//怎么样,自己会玩了吧?祝你好运!
//---
登录后可直接显示原图
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 23.626
主题: 14
帖子: 767
注册: 2004年12月
终于把字体换成中文。
登录后可直接显示原图
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 26.719
主题: 10
帖子: 285
注册: 2003年12月
梁燃, cqboy说得对,我试过了.很好.谢谢大家!
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 0
主题: 7
帖子: 223
注册: 2005年7月
cqboy说的都是对的。
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 0
主题: 2
帖子: 286
注册: 2005年4月
支持的中文字体提供一些出来啊!
另外能加.psd的图层吗?
这样功能更加强大哦!
不过变成action了都!
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 0
主题: 7
帖子: 223
注册: 2005年7月
呵呵,尼康的D50、D70和D70s拍的PP,确实读不出ISO信息,即使用Acdsee也读不出来。估计这是尼康相机固件的一个Bug。

通过脚本可以把常见的Exif信息都读出来,但是我觉得有那最常用的几项信息就可以了,所以简化了原来的代码。

如果大家觉得需要,我可以把那些都加上。
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 0
主题: 1
帖子: 21
注册: 2004年11月
把这个字体类型改为你的PS CS2支持的中文类型就可以了,比如"system"等,
我改的效果就是这样:

[2005-07-20 21:50 补充如下]

要去掉时间可以修改下面内容:

TI.contents = exposureTime+"Sec F/"+fNumber+ISOSpeedRatings+" "+phoDate+" "+phoTime;

改为:TI.contents = exposureTime+"Sec F/"+fNumber+ISOSpeedRatings+" "+phoDate;
登录后可直接显示原图
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 30.073
主题: 47
帖子: 923
注册: 2003年3月
我改了字体,可是中文名是????。
各位请问怎么把拍摄信息里面的时间消去,加ISO。
我的是CS2.
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 0
主题: 2
帖子: 177
注册: 2005年7月
哪位帖个04号字体的出来看看啊
“就可以在签名里面使用中文了!EXIF信息如果要使用中文的话,把“TI.font = "Tahoma"; ”这项做相应的修改就可以了!”
改成impact、verdana字体没见什么反应!!!
改成babybloc字体又可以
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 0
主题: 1
帖子: 21
注册: 2004年11月
这个脚本里面定义的字体不支持中文,要使用中文的话,可以修改下面内容:

//字体、字号、颜色和加粗等
TI.font = "babybloc";
//TI.font = "BowlORama";

修改为:

//字体、字号、颜色和加粗等
TI.font = "STXingkai";
//TI.font = "BowlORama";

就可以在签名里面使用中文了!EXIF信息如果要使用中文的话,把“TI.font = "Tahoma"; ”这项做相应的修改就可以了!
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 0
主题: 23
帖子: 374
注册: 2004年3月
作个记号,代替收藏的东西
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 0
主题: 1
帖子: 21
注册: 2004年11月
我的D70好象也没有ISO!

机器信息可以在这里加:

//标字的位置
TI.position = [AD.width.value-fWidth1/2,heightVar+0.75*fHight1+tSize];
TI.contents = exposureTime+"Sec F/"+fNumber+ISOSpeedRatings+" "+phoDate+" "+phoTime;

修改为:

//标字的位置
TI.position = [AD.width.value-fWidth1/2,heightVar+0.75*fHight1+tSize];
TI.contents = "NIKON D70 "+"  "+exposureTime+"Sec F/"+fNumber+ISOSpeedRatings+" "+phoDate+" "+phoTime;

把上面的“NIKON D70”改为自己的机器信息就可以了!
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 19.461
主题: 13
帖子: 911
注册: 2004年4月
D50的ISO信息好像很多软件都看不到。
如果能搞定ISO,中文,再加上机型信息就更完美了。谢谢楼主。
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 0
主题: 1
帖子: 21
注册: 2004年11月
谢谢楼主,使用了非常好!

另外TO:梁燃II,你要把图片打开才能使用脚本啊!
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 0
主题: 2
帖子: 177
注册: 2005年7月
没有ISO?
我不知道啊
就是从D50的样片改过来的!
中文可以吗?
楼主给个用04号字体的代码看看!
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
禁言中
泡网分: -0.002
主题: 38
帖子: 4466
注册: 2003年4月
KM5D 的PP是日本的MM……
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 26.719
主题: 10
帖子: 285
注册: 2003年12月
我的情况与梁燃一模一样.
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 21.327
主题: 38
帖子: 1712
注册: 2002年8月
做个记号!
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 0
主题: 7
帖子: 223
注册: 2005年7月
不能使用中文,是Windows字库的原因。

如果谁有好的中文字库,请给我,我可以修改一下代码使用新的字库。
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 23.626
主题: 14
帖子: 767
注册: 2004年12月
用了不错,还改了一个白边的也很好,就是不能用中文,那位DX有高见!
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 0
主题: 7
帖子: 223
注册: 2005年7月
To KM5D
你的那张PP中本身就没有ISO数据,真是有些奇怪。
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 0
主题: 2
帖子: 177
注册: 2005年7月
可以的
我用CS中文版
出错的原因是不是被处理的PP的Exif信息不全呢?
我刚试试就出现这个问题
后来用了D50的样片就没事了
不过怎么不见ISO信息
还有不能用那些特殊字体,比如说04号字!不知道是不是自己的方法问题!
登录后可直接显示原图
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 18.925
主题: 11
帖子: 342
注册: 2004年11月
非常感谢头头是道兄弟,这回成了:
我是在前面加了//

帮你顶:
登录后可直接显示原图
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 0
主题: 7
帖子: 223
注册: 2005年7月
不好意思,CS2中文版还没出呢。

我用的是汉化补丁。请参见:
https://forum.xitek.com/showthread.php?threadid=294962
https://forum.xitek.com/showthread.php?threadid=294836
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
禁言中
泡网分: -0.056
主题: 10
帖子: 1892
注册: 2004年7月
试用很好,谢谢楼主!
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
禁言中
泡网分: -0.002
主题: 38
帖子: 4466
注册: 2003年4月
CS 2的中文版,现在是什么样的了?汉化够完全么?
哪位给个介绍?
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 21.16
主题: 0
帖子: 660
注册: 2005年4月
众测俱乐部标识
头头是道
  呵呵,我刚才试过6.0,倒是不支持脚本功能。手头上没有7.0,测试不了。
等有时间后,我再“改”一个白底黑边的边框。

liuxin800
  请问在Photoshop 7.0 中如何用?打开“脚本”:找不到。


刚才找了找,文件菜单下没有脚本选项,估计7.0也不支持脚本功能。于是乎马上下了个cs2,呵呵
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
回复主题: 数码相片Exif边框脚本俱乐部
功能受限
游客无回复权限,请登录后再试