主题:数码相片Exif边框脚本俱乐部 [主题管理员:头头是道]
正序浏览
主题图片汇总
主题内检索
浏览:197405 回帖:1222
游客没有回帖权限
资深泡菜
泡网分: 65.362
主题: 9
帖子: 4036
注册: 2005年5月
月赛优胜标识
原文由 hjg007 发表
我用PS4在4008*5336的文件上碰到这个问题。内边框不全,文字不能出来,缩小后正常。


我最大的文件只有4300×3000。在cs3上正常。

因为没有cs4,可否将出错照片加好边框后调整为800的发上来看看?
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 28.796
主题: 12
帖子: 670
注册: 2003年2月
我用PS4在4008*5336的文件上碰到这个问题。内边框不全,文字不能出来,缩小后正常。
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 65.362
主题: 9
帖子: 4036
注册: 2005年5月
月赛优胜标识
原文由 hjg007 发表
对于很大的照片无法处理,不知是何原因?


第一个提出问题的人,谢谢。

能说说多大吗?请查查像素数。

这个脚本只考虑了长边在4000~5000千像素以下电脑上看的图片,如果太大,需要加几条语句。
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 28.796
主题: 12
帖子: 670
注册: 2003年2月
对于很大的照片无法处理,不知是何原因?
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
禁言中
泡网分: 24.828
主题: 21
帖子: 10211
注册: 2009年1月
谢谢好色之徒!
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
禁言中
泡网分: 23.712
主题: 35
帖子: 1678
注册: 2001年2月
Aperture 2和BoderFX 用户飘过。

边框这东西,简洁一些为好,
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 65.362
主题: 9
帖子: 4036
注册: 2005年5月
月赛优胜标识
样图,横图
登录后可直接显示原图
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 65.362
主题: 9
帖子: 4036
注册: 2005年5月
月赛优胜标识
样图,竖图
登录后可直接显示原图
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 65.362
主题: 9
帖子: 4036
注册: 2005年5月
月赛优胜标识
新的面板,取消了字号选择,增加一行信息栏,增加了测光模式和曝光程序,增加了侧边选择。
登录后可直接显示原图
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 65.362
主题: 9
帖子: 4036
注册: 2005年5月
月赛优胜标识
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 65.362
主题: 9
帖子: 4036
注册: 2005年5月
月赛优胜标识
最新版。

http://g_zhubajie_com/urllink.php?id=4079162rng0xfmbmqs8m4n5

[逸之 编辑于 2009-02-21 23:59]
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 12.473
主题: 1
帖子: 346
注册: 2006年4月
原文由 逸之 发表
这个地址无法使用!!


在找个上传地方吧,等...
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 65.362
主题: 9
帖子: 4036
注册: 2005年5月
月赛优胜标识
这个地址无法使用!!
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 65.362
主题: 9
帖子: 4036
注册: 2005年5月
月赛优胜标识
http://800_himay_com/ContentPane.aspx?Path=%2f

最新版。

[逸之 编辑于 2009-02-21 15:08]

[2009-02-21 15:17 补充如下]

困难网盘有问题。
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 65.362
主题: 9
帖子: 4036
注册: 2005年5月
月赛优胜标识
网盘有问题。等恢复了再挂一下。
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 26.671
主题: 6
帖子: 738
注册: 2004年2月
原文由 northwind 发表

点击后显示非法参数。


发现问题了,你最后一个链接少一个j
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 26.671
主题: 6
帖子: 738
注册: 2004年2月
原文由 逸之 发表
没有删除,可以下载呀

点击后显示非法参数。
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 65.362
主题: 9
帖子: 4036
注册: 2005年5月
月赛优胜标识
没有删除,可以下载呀
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 0.002
主题: 0
帖子: 3
注册: 2008年3月
新的下载地址都无效了
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 65.362
主题: 9
帖子: 4036
注册: 2005年5月
月赛优胜标识
最后的下载地址,没有大问题就不改动了。请大家试试,并提出修改意见。

http://g_zhubajie_com/urllink.php?id=3904055hsmq7qgerzldec8

[逸之 编辑于 2009-02-06 13:12]
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 65.362
主题: 9
帖子: 4036
注册: 2005年5月
月赛优胜标识
现在问题较多的是镜头信息。由于现在的exif信息中没有镜头信息的统一标准,现在在exif信息中的镜头信息是各商家加上去的,还有快门次数等。经过我反复实验,我个人认为并不是adobe不认可,而是各商家的软件与adobe的兼容性问题。如用nx2编辑过图像photoshop读入后还能找到这部分信息,但改写了exif文件,这部分信息存放在http: //ns.adobe.com/exif/1.0/aux中了。在photoshop处理完存储时也没有丢掉,用photoshop再一次读入该图像,信息还在。但是,nx2读入photoshop处理的图像,不承认http://ns.adobe.com/exif/1.0/aux,这部分信息也就没有了,并且用nx2再一次处理该图像后,就再也找不到镜头这部分信息了,永久丢失了。

我还发现,要想在photoshop读入nx2处理过的图像里找到镜头信息,NEF(RAW)文件没有什么问题,只是首次读入nx2处理过的jpg文件要有点窍门儿(photoshop处理过的图像再由nx2处理后存储的文件没有镜头信息):
1 点击photoshop下拉菜单的“编辑”——“首选项”——“文件处理”;
2 勾上“对jpeg文件优先使用Adoba Camera Raw”选项,或在Camera Raw的上面菜单中勾上“始终使用Camera Raw打开Jpeg文件及设置”选项。
3 打开图像后,点击photoshop的“文件”——“文件简介”,在“高级”中可以发现镜头和快门次数等信息。

以上是我个人初步实验发现的结果,不一定对。大家可以试试。

[逸之 编辑于 2009-02-06 10:59]
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 65.362
主题: 9
帖子: 4036
注册: 2005年5月
月赛优胜标识
脚本又做了些修改。修改内容如下:

1. 针对竖图底边空间有限而发现的问题,将时间和日期放到了第一行的主题文字后面,适量缩小了竖图标注文字字号。
2. 边框排版以及行间距做了适量调整。
3. 默认选项做了调整。

时间有限,没有经过有效测试,请发现问题的朋友提出来。

原来的下载地址失效,改用如下地址:
http://g_zhubajie_com/urllink.php?id=3903223xdo0eex2zwxl8apj

[2009-02-06 10:35 补充如下]

本版修改日期:

2009年2月6日。

[2009-02-06 12:47 补充如下]

不好意思,发现一个bug。以这个为准:

http://g_zhubajie_com/urllink.php?id=3904055hsmq7qgerzldec8j
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 65.362
主题: 9
帖子: 4036
注册: 2005年5月
月赛优胜标识
又对脚本做了些改动。

关于镜头输出是这样设计的:
一、关于镜头信息
如果图像的exif中有镜头信息,尽管人工选了镜头信息,但还是按照exif的信息输出。如果图像的exif中没有镜头信息,则使用人工选定的镜头信息。
如果人工选“不显示镜头信息”,则没有镜头信息输出。
二、关于字号的选定
字号选取已经改为按照加边框图像的大小自动计算边框文字的大小。请大家试用,随时提出改进意见。
三、边框上现有的信息够不够用?还有一些如“曝光程序”、“白平衡”.....等需不需要,如果需要,哪些优先,因为全写上地方不够。

下载地址:
http://g_zhubajie_com/urllink.php?id=3899348n34os71lvmksm6uq

将其中后缀为jsx的文件考入以下目录
C:\Program Files\Adobe\Adobe Photoshop CS3\预置\脚本目录下就可以用了。

使用方法:
用photoshop cs2,cs3或cs4打开一副图像。
点击的“文件”——“脚本”——“090205-边框侧边内线颜色可选上图专用共享版cs4可用自动v.3”(名字随意改),出现一个对话框。按照对话框选项操作即可。
最简单的是直接点击“确定”即可将公司相机型号,镜头,光圈,速度,ISO,使用焦距,拍摄日期,拍摄时间等打印在边框上。图像大小无关,脚本根据图像的大小自动调整边框上的字号。

还可以自己改进该脚本:
将后缀jsx改为txt,里面的注释很多,除了原有的,我还加上了许多。还有提示,如“//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@可以在下条中将自己的名字加到 拍摄: 的后面,就不用每次制作边框时输入自己名字了。”还有如“/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@以下镜头型号的字符串赋值可以根据自己的需要更改等”
改完后,将后缀改回jsx,考入目录即可。

肯定有很多问题,没有很好地测试,请大家提意见。

[逸之 编辑于 2009-02-05 22:44]

[2009-02-06 11:09 补充如下]

本版修改日期为2009年2于5日。已经升级,下载地址失效,见下帖。
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 0.002
主题: 0
帖子: 3
注册: 2008年3月
请问exif脚本文字居中怎么写
TI.justification = Justification.LEFT; //左对齐
TI.position = [fWidth/2 + leftLogoWidth,hFrame + fHeight/2 + parseInt(lFontSize)]; //设定主题文字位置
怎么改才能居中呢
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 65.362
主题: 9
帖子: 4036
注册: 2005年5月
月赛优胜标识
“好摄之徒”兄修改的几处是加了字符串转整数的函数。描述点阵的应该是数字,只是不知在cs2上和cs3上为什么能用。改了以后,与以前一样在cs2上和cs3上用。大家可以直接下载“好摄之徒”DX的脚本,不用考上帖了。

“好摄之徒”已经把修改过了传到到网盘上,有需要的自行下载吧
http://g_zhubajie_com/urllink.php?id=3542127siylz0u7ir3rqo22

后缀jsx的程序是photoshop专用的脚本程序,用※※※※※※※※※※语言编写的,估计很多朋友都不陌生。
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 65.362
主题: 9
帖子: 4036
注册: 2005年5月
月赛优胜标识
关于cs4不能用的问题,看了一下“好摄之徒”DX修改的地方,感觉确实是函数用得不严谨,是个bug。修改后在cs2和cs3上也能用。

[逸之 编辑于 2009-01-28 21:36]

[2009-01-29 11:01 补充如下]

“好摄之徒”兄修改的几处是加了字符串转整数的函数。描述点阵的应该是数字,只是不知在cs2上和cs3上为什么能用。改了以后,与以前一样在cs2上和cs3上用。大家可以直接下载“好摄之徒”DX的脚本,不用考上帖了。

“好摄之徒”已经把修改过了传到到网盘上,有需要的自行下载吧
http://g_zhubajie_com/urllink.php?id=3542127siylz0u7ir3rqo22

后缀jsx的程序是photoshop专用的脚本程序,用※※※※※※※※※※语言编写的,估计很多朋友都不陌生。
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 65.362
主题: 9
帖子: 4036
注册: 2005年5月
月赛优胜标识
注意不要将最后的逸之编辑考上。
脚本如下:

/*   逸之的说明:

首先声明,本脚本的原版是在“头头是道”和“试试”资深提供的。
本脚本是我在其基础上修改的,增加了一些内容和选项。原以为有了《光影魔术手》以后,这个就没有人用了。现在看来,还有一些摄友喜欢。
由于“头头是道”大侠好久没有露面,我是早期使用者之一, 也是受益者之一。为了表达对“头头是道”和“试试”的谢意,个人觉得有义务将这个“好东西”提供给更多的朋友。
由于本人没有链接的方法,所以直接考到贴上,大家可以Ctrl+c考下来,Ctrl+v直接粘到记事本里,保存后,将该txt扩展名直接改为jsx。
并将该文件考入X\ProgramAdobeFiles\Adobe\Adobe Photoshop CS3\预置\脚本目录下。

这个版本的脚本我做了如下修改:
1. 保留头头是道的作者名录入,图像说明录入,可选exif信息,字体和文字色彩,镜头选择,边框宽度选择,边框颜色选择,标签位置,logo等功能。
2. 增加内边线颜色选择,加粗了内边线。
3. 增加了图像侧边有无选项。
4. 对原对话框排版、字号、镜头种类做了少许改动。
5  针对喜欢自己喜欢根据自己需要调整程序的朋友,在可以改动地方增加了注释。为方便查找,本人在这些地方做“@@@@@@@@@@@@@@@@@@@@@@@@@@@@@”来标记
6  此脚本可以直接用在cs2和cs3上。我没有用cs4,需要的摄友可以按照本贴上其它摄友的方法修改。
7  本脚本最后改动的日期为:2009年1月27日


用法:复制文本到windows记事本txt文本中,文件备份,将文件名后缀改为jsx,并将该文件考入  X\ProgramAdobeFiles\Adobe\Adobe Photoshop CS3\预置\脚本目录下就可以了。
打开ps,点击文件-脚本-该文件名,出现对话框,按照提示做就是了。


*/

/*
1、本脚本用于提取数码相片的Exif信息,输入相片主题和说明文字,选择Logo标志,为相片加框。经测试,本脚本在Photoshop CS2中应用成功。
注意。相片中需包含有Exif信息,否则运行脚本时将出错。另外相片短边尺寸最好不要小于450像数。

2、在两种情况下,需要用户用记事本打开本脚本并修改相关内容。一个是当你选择打印镜头信息时,需要先修改脚本中的镜头型号。另一个是当你从下拉列表中直接选择本脚本默认设置的Logo时,需要先修改脚本中的Logo显示文本及其文件位置。注意:Logo图片可为透明的PSD文件或GIF文件,Logo高度不要超过50像素。Logo路径在脚本中可使用/号或者使用\\号,不能使用\号。

3、脚本调用方法:将压缩包内的JSX文件释放在一个地方,打开PS,打开“文件”,打开“脚本”,打开“浏览”,指定刚才释放的JSX文件。或者:如果是中文版Photoshop,将JSX文件复制到文件夹“C:\Program Files\Adobe\Adobe Photoshop CS2\预置\脚本”中。如果是英文版,则将JSX文件复制到文件夹“C:\Program Files\Adobe\Adobe Photoshop CS2\Presets\Scripts”中。

4、本脚本中所采用的读取EFIF信息的源程序源于互联网。原作者已无法可考。特此向原作者致敬!本脚本的下拉列表模块感谢无忌论坛的真皮小熊提供。

5、作者收集的一些好字体,建议大家下载安装使用。
字库下载地址:http://220.174.221.7/soft/ttf.rar。
字库安装方法:释放压缩包内的TTF文件,打开“控制面板”,打开“字体”,打开“文件”菜单,打开“安装新字体”后,指定需要安装的字体所在位置。

6、本脚本作者网站:http://bbs_yibai_com_cn,QQ:10096906,Email:hainan@263.net.cn。本脚本源代码具有非常详细的注释和说明,请爱好者视自己要求自行修改。使用中遇到问题的,可与作者联系。

7、本帖子提及的边框脚本,作者将随时给予更新,以实现增强功能或修正Bug之目的。最新脚本下载地址:
http://220.174.221.7/soft/PS_Frame.rar

8、该脚本最后更新日期为:2005年9月2日。
*/


//------------- Main script Begin ------------
var colorErr = "边框灰度值输入错误!" + "\n" + "系统将默认为黑色。";
var noLens = '<不显示镜头信息>';
var noLogo = '<不打印Logo>';
var selectLogo = '<通过对话框手动选择Logo文件>';
var titleColor = new SolidColor(); //主题文字颜色
var msgColor = new SolidColor(); //说明文字颜色
var infoColor = new SolidColor(); //拍摄信息文字颜色
var frameColor = new SolidColor(); //外边框颜色
var lineColor = new SolidColor(); //内线颜色
var titleFontColor; //主题颜色名称
var msgFontColor; //说明文字颜色名称
var infoFontColor; //拍摄信息颜色名称
var colors = new Array(); //颜色值数组
var colorNames = new Array(); //颜色名称数组
var frameSide = 1; //文字的位置代码。1为下面,2为右面,3为左面
var myLogo = new Array(); //定义相片Logo列表文本
var myLogoFile = new Array(); //定义相片Logo文件位置

//读取系统字体,定义字体名称及PostScript name of the font
var myFonts = new Array();
var fontPSNames = new Array();
for (j = 0;j < fonts.length;j ++)
{
if (! fontPSNames[fonts[j].family])
{
fontPSNames[fonts[j].family] = fonts[j].postScriptName;
myFonts.push(fonts[j].family);
}
}

var builder = createBuilderDialog(); //定义对话框内容
initializeBuilder(builder); //初始化状态值
if (runBuilder(builder) == 1)
{
var resSpec = createFrame(builder); //创建边框
}
//------------- Main script End -------------

//11111111111111111111111111111111111111111
//定义设置对话框 开始
function createBuilderDialog()
{
var myFontSizes = new Array(); //定义字体字号
myFontSizes[0] = 10;
myFontSizes[1] = 12;
myFontSizes[2] = 14;
myFontSizes[3] = 16;
myFontSizes[4] = 20;
myFontSizes[5] = 24;
myFontSizes[6] = 30;
myFontSizes[7] = 36;
myFontSizes[8] = 48;
myFontSizes[9] = 60;
myFontSizes[10] = 80

//定义镜头。请自行修改为自己所拥有的镜头型号
var myLens = new Array();
myLens[0] = noLens; //请不要改动该行

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@以下镜头型号的字符串赋值可以根据自己的需要更改。
//myLens[1] = 'SIGMA AF 18-125mm F3.5-5.6 DC'; //请改成你的镜头型号
//myLens[2] = 'CANON EF 50mm F/1.8Ⅱ';
        myLens[1] = 'AFS12-24mm/4G';
myLens[2] = 'AFS17-35mm F/2.8D';
myLens[3] = 'AFS17-55mmG';
myLens[4] = 'AFS24-70mm/2.8G';
myLens[5] = 'AFS28-70mmF/2.8D';
        myLens[6] = 'AF 70-180mmF/4.5-5.6D M';
myLens[7] = 'AFS70-200mmF/2.8G VR';
myLens[8] = 'AFS80-400mmF/4.5-5.6D VR';
myLens[9] = 'AF 20mmF/2.8D';
myLens[10] = 'AF 24mmF/2.8D';
myLens[11] = 'AF 28mmF/1.4D';
myLens[12] = 'AF 35mmF/2D';
myLens[13] = 'AF 50mmF/1.4D';
myLens[14] = 'AF 60mmF/2.8D M';
myLens[15] = 'AF 85mmF/1.4D';
myLens[16] = 'AF 105mmF/2.8D M';
myLens[17] = 'AFS105/2.8G M VR';
myLens[18] = 'AF 135mmF/2D DC';
myLens[19] = 'AF 180mmF/2.8D';
myLens[20] = 'AF 200mmF/4D M';
myLens[21] = 'AF 300mmF/4D';

//定义Logo。
myLogo[0] = noLogo; //请不要改动该行
myLogoFile[myLogo[0]] = '';
myLogo[1] = selectLogo; //请不要改动该行
myLogoFile[myLogo[1]] = '';
myLogo[2] = '60×40 手写Logo'; //请改成你想要的内容。你可以根据自己的情况按照序号增加或者删除Logo列表。你也可以注释掉以下4行而不进行其它修改。
myLogoFile[myLogo[2]] = 'C:\\Documents and Settings\\Administrator\\桌面\\test.gif'; //Logo图片位置,可为透明的PSD文件或GIF文件,Logo高度不要超过50像素。路径可使用/号或者使用\\号,不能使用\号
myLogo[3] = '60×40 印章Logo'; //请改成你想要的内容
myLogoFile[myLogo[3]] = 'C:\\Documents and Settings\\Administrator\\桌面\\test2.gif'; //Logo图片位置。

//设置对话框界面文字内容
var optionTitle = '相片边框信息设置[Build 20050902]';
var msgPnlTitle = '输入信息';
var titleDescription = '相片作者';

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@可以在下条中将自己的名字加到    拍摄:  的后面,就不用每次制作边框时输入自己名字了。
var titleEditText = '拍摄: ';

var fontSizeDescription = '字号';
var fontDescription = '字体';
var msgDescription = '主题文字';
var msgEditText = ' ';
var lensDescription = '镜头信息';
var frameWidthDescription = '边框宽度';
var frameWidthRadiobutton1 = '宽边';
var frameWidthRadiobutton2 = '窄边';
var sidewidth0 = '侧边选项';
var sidewidth1 = '有侧边';
var sidewidth2 = '无侧边';
var frameColorDescription = '        边框颜色';
var frameColorNote = '(0为黑色,255为白色)';
var labelSideDescription = '标签位置';
var labelSideText0 = '自动';
var labelSideText1 = '下边';
var labelSideText2 = '右边';
var labelSideText3 = '左边';
var labelSideNote = '(自动:横幅时为下边,竖幅时为右边)';
var okDescription = '确定';
var cancelDescription = '取消';
var colorDescription = '颜色';
var infoSelectText = '拍摄信息';
var infoModelText = '相机型号';
var infoShutterText = '快门';
var infoFText =  '光圈';
var infoISOText = 'ISO';
var infoTText = '曝光补偿';
var infoFocalText = '焦距';
var infoFiredText = '闪光模式';
var infoDateText = '拍摄日期';
var infoTimeText = '拍摄时间';
var logoDescription = '相片Logo';
var logoSideDescription = '        Logo位置';
var logoSideLeft = '标签前';
var logoSideRight = '标签后';
var linecolortext = '内线颜色'; //对话框显示“内线颜色”赋值

//22222222222222222222222222222222222222222222222
//定义颜色名称及颜色值。用户可以改为自己喜欢的颜色
//list of color from http://zh.※※※※※※※※※.org/w/index.php?title=%E9%A1%8F%E8%89%B2%E5%88%97%E8%A1%A8
colorNames[0] = '红色';
colors[colorNames[0]] = [255,0,0];
colorNames[1] = '猩红色';
colors[colorNames[1]] = [255,36,0];
colorNames[2] = '朱红色';
colors[colorNames[2]] = [255,77,0];
colorNames[3] = '橙色';
colors[colorNames[3]] = [255,165,0];
colorNames[4] = '琥珀色';
colors[colorNames[4]] = [255,191,0];
colorNames[5] = '金色';
colors[colorNames[5]] = [255,215,0];
colorNames[6] = '黄色';
colors[colorNames[6]] = [255,255,0];
colorNames[7] = '柠檬绿色';
colors[colorNames[7]] = [204,255,0];
colorNames[8] = '黄绿色';
colors[colorNames[8]] = [102,255,0];
colorNames[9] = '绿色';
colors[colorNames[9]] = [0,255,0];
colorNames[10] = '青色';
colors[colorNames[10]] = [0,255,255];
colorNames[11] = '蔚蓝色';
colors[colorNames[11]] = [0,127,255];
colorNames[12] = '蓝色';
colors[colorNames[12]] = [0,0,255];
colorNames[13] = '紫色';
colors[colorNames[13]] = [139,0,255];
colorNames[14] = '品红色';
colors[colorNames[14]] = [255,0,255];
colorNames[15] = '栗色';
colors[colorNames[15]] = [128,0,0];
colorNames[16] = '橙黄色';
colors[colorNames[16]] = [255,204,0];
colorNames[17] = '橄榄色';
colors[colorNames[17]] = [128,128,0];
colorNames[18] = '春绿色';
colors[colorNames[18]] = [0,255,128];
colorNames[19] = '鸭绿色';
colors[colorNames[19]] = [0,128,128];
colorNames[20] = '※※蓝';
colors[colorNames[20]] = [0,0,128];
colorNames[21] = '靛色';
colors[colorNames[21]] = [75,0,128];
colorNames[22] = '白色';
colors[colorNames[22]] = [255,255,255];
colorNames[23] = '银色';
colors[colorNames[23]] = [192,192,192];
colorNames[24] = '灰色';
colors[colorNames[24]] = [128,128,128];
colorNames[25] = '暗灰色';
colors[colorNames[25]] = [64,64,64];
colorNames[26] = '黑色';
colors[colorNames[26]] = [0,0,0];
colorNames[27] = '肉色';
colors[colorNames[27]] = [255,140,105];
colorNames[28] = '桃色';
colors[colorNames[28]] = [255,229,180];
colorNames[29] = '奶油色';
colors[colorNames[29]] = [255,253,208];
colorNames[30] = '米色';
colors[colorNames[30]] = [245,245,220];
colorNames[31] = '熏衣草色';
colors[colorNames[31]] = [230,230,250];
colorNames[32] = '兰花色';
colors[colorNames[32]] = [218,112,214];
colorNames[33] = '粉红色';
colors[colorNames[33]] = [255,192,203];
colorNames[34] = '珊瑚红';
colors[colorNames[34]] = [255,127,80];
colorNames[35] = '燃橙色';
colors[colorNames[35]] = [204,85,0];
colorNames[36] = '古铜色';
colors[colorNames[36]] = [184,115,51];
colorNames[37] = '赭色';
colors[colorNames[37]] = [204,119,34];
colorNames[38] = '墨褐色';
colors[colorNames[38]] = [112,66,20];
colorNames[39] = '宝石绿';
colors[colorNames[39]] = [80,200,120];
colorNames[40] = '樱桃色';
colors[colorNames[40]] = [222,49,99];

var dlg = new Window('dialog', optionTitle);
dlg.alignChildren = 'center';
dlg.orientation = 'column';
dlg.msgPnl = dlg.add('group');  

dlg.msgPnl = dlg.add('panel', undefined, msgPnlTitle);
dlg.msgPnl.title = dlg.msgPnl.add('group'); //主题
dlg.msgPnl.msg = dlg.msgPnl.add('group'); //说明文字
dlg.msgPnl.lens = dlg.msgPnl.add('group'); //拍摄信息
dlg.msgPnl.photoInfo = dlg.msgPnl.add('group'); //选择拍摄信息
dlg.msgPnl.frameWidthh = dlg.msgPnl.add('group'); //边框宽度
dlg.msgPnl.labelSide = dlg.msgPnl.add('group'); //标签位置
dlg.msgPnl.logo = dlg.msgPnl.add('group'); //相片Logo
dlg.msgPnl.linecolordlg = dlg.msgPnl.add('group'); //选择内线颜色
dlg.msgPnl.sidewidth = dlg.msgPnl.add('group'); //侧边选项

//建立按钮面板
dlg.btnPnl = dlg.add('group');
dlg.btnPnl.orientation = "row";
dlg.btnPnl.okBtn = dlg.btnPnl.add('button', undefined, okDescription, {name:'ok'});
dlg.btnPnl.cancelBtn = dlg.btnPnl.add('button', undefined, cancelDescription, {name:'cancel'});

with (dlg.msgPnl)
{
alignChildren = 'fill';


//相片作者的字号、字体、颜色默认设定,可以根据需要修改默认值。

title.st = title.add('statictext', undefined, titleDescription);
title.et = title.add('edittext', undefined, titleEditText,{multiline:false});
title.et.preferredSize = [200,20];
title.titleFontSizeSt = title.add('statictext', undefined, fontSizeDescription);
title.titleFontSizeEt = title.add('dropdownlist', undefined, myFontSizes);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//具体选项见前面的111111111111111111111111111处字体字号定义,改4为自己需要的字号值,这里的4是“20”号字,上图的小图用的。大图和原图我喜欢用60号,选9即可。
title.titleFontSizeEt.selection = 4; //指定主题字号默认值索引数。从0开始计数。

title.titleFontSizeEt.preferredSize = [50,20];

title.titleFontSt = title.add('statictext', undefined, fontDescription);
title.titleFontEt = title.add('dropdownlist', undefined, myFonts);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
title.titleFontEt.selection = 18; //指定主题文字字体默认值索引数。从0开始计数。

title.titleColorsSt = title.add('statictext', undefined, colorDescription);
title.titleColorsEt = title.add('dropdownlist', undefined, colorNames);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//具体选项见前面的222222222222222222222222222222处定义字体颜色,这里的5是金色
title.titleColorsEt.selection = 5; //指定主题文字颜色默认值索引数。从0开始计数。

//说明文字的字号、字体、颜色默认设定,可以根据需要修改默认值。见上面相片作者的字号、字体、颜色默认设定说明。
msg.st = msg.add('statictext', undefined, msgDescription);
msg.et = msg.add('edittext', undefined, msgEditText,{multiline:false});
msg.et.preferredSize = [200,20];

msg.msgFontSizeSt = msg.add('statictext', undefined, fontSizeDescription);
msg.msgFontSizeEt = msg.add('dropdownlist', undefined, myFontSizes);
msg.msgFontSizeEt.selection = 4; //指定说明文字字号默认值索引数。从0开始计数。
msg.msgFontSizeEt.preferredSize = [50,20];

msg.msgFontSt = msg.add('statictext', undefined, fontDescription);
msg.msgFontEt = msg.add('dropdownlist', undefined, myFonts);
msg.msgFontEt.selection = 18; //指定说明文字字体默认值索引数。从0开始计数。

msg.msgColorsSt = msg.add('statictext', undefined, colorDescription);
msg.msgColorsEt = msg.add('dropdownlist', undefined, colorNames);
msg.msgColorsEt.selection = 5; //指定说明文字颜色默认值索引数。从0开始计数。

//拍摄参数的字号、字体、颜色默认设定,可以根据需要修改默认值,见上面相片作者的字号、字体、颜色默认设定说明。
lens.st = lens.add('statictext', undefined, lensDescription);
lens.et = lens.add('dropdownlist', undefined, myLens);
lens.et.selection = 0; //指定镜头型号默认值索引数。从0开始计数。
lens.et.preferredSize = [200,20];

lens_infoFontSizeSt = lens.add('statictext', undefined, fontSizeDescription);
lens_infoFontSizeEt = lens.add('dropdownlist', undefined, myFontSizes);
lens_infoFontSizeEt_selection = 3; //指定拍摄信息字号默认值索引数。从0开始计数。
lens_infoFontSizeEt_preferredSize = [50,20];

lens_infoFontSt = lens.add('statictext', undefined, fontDescription);
lens_infoFontEt = lens.add('dropdownlist', undefined, myFonts);
lens_infoFontEt_selection = 8; //指定拍摄信息字体默认值索引数。从0开始计数。

lens_infoColorsSt = lens.add('statictext', undefined, colorDescription);
lens_infoColorsEt = lens.add('dropdownlist', undefined, colorNames);
lens_infoColorsEt_selection = 5; //指定拍摄信息文字颜色默认值索引数。从0开始计数。


//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//选择拍摄信息的默认值。true为默认勾选,false为不勾选
photoInfo.text = photoInfo.add('statictext', undefined, infoSelectText);
photoInfo_infoModel = photoInfo.add('checkbox', undefined, infoModelText);
photoInfo_infoModel_value = true;
photoInfo_infoShutter = photoInfo.add('checkbox', undefined, infoShutterText);
photoInfo_infoShutter_value = true;
photoInfo_infoF = photoInfo.add('checkbox', undefined, infoFText);
photoInfo_infoF_value = true;
photoInfo_infoISO = photoInfo.add('checkbox', undefined, infoISOText);
photoInfo_infoISO_value = true;
photoInfo_infoT = photoInfo.add('checkbox', undefined, infoTText);
photoInfo_infoT_value = true;
photoInfo_infoFocal = photoInfo.add('checkbox', undefined, infoFocalText);
photoInfo_infoFocal_value = true;
photoInfo_infoFired = photoInfo.add('checkbox', undefined, infoFiredText);
photoInfo_infoFired_value = false;
photoInfo_infoDate = photoInfo.add('checkbox', undefined, infoDateText);
photoInfo_infoDate_value = true;
photoInfo_infoTime = photoInfo.add('checkbox', undefined, infoTimeText);
photoInfo_infoTime_value = false;

//边框宽度
frameWidthh.st = frameWidthh.add('statictext', undefined, frameWidthDescription);
frameWidthh.frameWidth1 = frameWidthh.add('radiobutton', undefined, frameWidthRadiobutton1);
frameWidthh.frameWidth2 = frameWidthh.add('radiobutton', undefined, frameWidthRadiobutton2);

frameWidthh.frameColorSt = frameWidthh.add('statictext', undefined, frameColorDescription);
frameWidthh.frameColorsEt = frameWidthh.add('dropdownlist', undefined, colorNames);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//边框颜色默认值索引数。从0开始计数。具体选项见前面的222222222222222222222222222222处定义字体颜色,26为黑色,可以根据索引改成自己喜欢的颜色
frameWidthh.frameColorsEt.selection = 26;

//内线颜色
linecolordlg.st = linecolordlg.add('statictext', undefined, linecolortext); //对话框显示“内线颜色”提示
linecolordlg.linecolorsEt = linecolordlg.add('dropdownlist', undefined, colorNames); //对话框建立颜色选择下拉窗口
// linecolordlg.linecolorsEt.preferredSize = [80,20]; //下拉窗口尺寸,使用缺省值

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//指定内线颜色默认值索引数,红色。从0开始计数。具体选项见前面的222222222222222222222222222222处定义字体颜色,0为红色,可以根据索引改成自己喜欢的颜色
linecolordlg.linecolorsEt.selection = 0;

//侧边选项
sidewidth.st = sidewidth.add('statictext', undefined, sidewidth0); //对话框显示“侧边选项”提示
sidewidth.sidewidth1 = sidewidth.add('radiobutton', undefined, sidewidth1); //对话框显示侧边选项按钮
sidewidth.sidewidth2 = sidewidth.add('radiobutton', undefined, sidewidth2); //对话框显示侧边选项按钮

//标签位置
labelSide.st = labelSide.add('statictext', undefined, labelSideDescription);
labelSide.labelSide0 = labelSide.add('radiobutton', undefined, labelSideText0);
labelSide.labelSide1 = labelSide.add('radiobutton', undefined, labelSideText1);
labelSide.labelSide2 = labelSide.add('radiobutton', undefined, labelSideText2);
labelSide.labelSide3 = labelSide.add('radiobutton', undefined, labelSideText3);
labelSide.st = labelSide.add('statictext', undefined, labelSideNote);

//相片Logo
logo.st = logo.add('statictext', undefined, logoDescription);
logo.et = logo.add('dropdownlist', undefined, myLogo);
logo.et.selection = 0; //指定Logo默认值索引数。从0开始计数。
logo.et.preferredSize = [200,20];

logo.st = logo.add('statictext', undefined, logoSideDescription);
logo.logoSide1 = logo.add('radiobutton', undefined, logoSideLeft);
logo.logoSide2 = logo.add('radiobutton', undefined, logoSideRight);
}

dlg.center(); //设置对话框为屏幕中心位置
return dlg;

} // 定义设置对话框 结束

// Set up initial control states
// 初始化设置区信息
function initializeBuilder(builder)
{
with (builder)
{
btnPnl.okBtn.onClick   = function () { this.parent.parent.close(1);};
btnPnl.cancelBtn.onClick = function () { this.parent.parent.close(2);};

with (msgPnl)
{
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@如果喜欢窄边,可以将下条注释掉,既前面加上//,将窄边的//去掉。
frameWidthh.frameWidth1.value = true; //默认边框宽度为宽边
sidewidth.sidewidth2.value = true; //默认有侧边
//frameWidthh.frameWidth2.value = true; //默认边框宽度为窄边
labelSide.labelSide0.value = true; //标签位置默认值为自动
logo.logoSide2.value = true; //Logo位置默认值为标签后
}
}
}

// This function invokes the dialog an returns its result
// 调用并返回对话框的结果
function runBuilder(builder)
{
return builder.show();
}

//分解Exif信息中的字符串。该获取Exif信息的方法引用于互联网上。
//本人觉得该方法不是太好,效率低,应该从XML格式文件中直接提取相关元素信息
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;
}

//生成相片边框动作
function createFrame(builder)
{
//AD = activeDocument; //在原相片上添加边框
var AD = activeDocument.duplicate(); //在相片的副本上添加边框
var photoWidth = AD.width.value; //图片宽度
var photoHeight = AD.height.value; //图片高度

if (photoWidth < photoHeight) //如果图片高度大于宽度则选择右侧标注文字
frameSide = 2;

if (builder.msgPnl.labelSide.labelSide1.value) //选择下侧标注文字
frameSide = 1;

if (builder.msgPnl.labelSide.labelSide2.value) //选择右侧标注文字
frameSide = 2;

if (builder.msgPnl.labelSide.labelSide3.value) //选择左侧标注文字
frameSide = 3;

switch (frameSide)
{
case 2:
app.activeDocument.rotateCanvas(90.0); //如果选择右侧标注文字则90度旋转
break;
case 3:
app.activeDocument.rotateCanvas(-90.0); //如果选择左侧标注文字则-90度旋转
break;
}

var title = builder.msgPnl.title.et.text; //获取相片主题
var body = builder.msgPnl.msg.et.text; //获取说明文字
var lens = builder.msgPnl.lens.et.selection.text; //获取镜头型号
var logoType = builder.msgPnl.logo.et.selection.text; //获取Logo信息
var lFontSize = builder.msgPnl.title.titleFontSizeEt.selection.text; //获取主题字号
var rFontSize = builder.msgPnl.msg.msgFontSizeEt.selection.text; //获取说明文字字号
var infoFontSize = builder_msgPnl_lens_infoFontSizeEt_selection_text; //获取拍摄信息字号
var infoHeight = 0 //拍摄信息高度调整
titleFontColor = builder.msgPnl.title.titleColorsEt.selection.text; //获取主题颜色名称
msgFontColor = builder.msgPnl.msg.msgColorsEt.selection.text; //获取说明文字颜色名称
infoFontColor = builder_msgPnl_lens_infoColorsEt_selection_text; //获取拍摄信息颜色名称
frameColor = builder.msgPnl.frameWidthh.frameColorsEt.selection.text; //获取边框颜色名称
lineColor = builder.msgPnl.linecolordlg.linecolorsEt.selection.text; //获取内线颜色名称
var logoFilePath = null; //
var kColor = new SolidColor(); //边框底色
var fColor = new SolidColor(); //内边线色
var rColor = new SolidColor(); //右边字体颜色

if (logoType == selectLogo) //手动选择Logo
{
logoFilePath = File.openDialog('请选择Logo文件','Logo Files:*.GIF;*.PSD');
if(logoFilePath != null)
{
var logofile = new File(logoFilePath);
}
}
else //否则正常处理
{
var logoFilePath = myLogoFile[logoType];
var logofile = new File(logoFilePath);
}

titleColor.rgb.red = colors[titleFontColor][0];
titleColor.rgb.green = colors[titleFontColor][1];
titleColor.rgb.blue = colors[titleFontColor][2];

msgColor.rgb.red = colors[msgFontColor][0];
msgColor.rgb.green = colors[msgFontColor][1];
msgColor.rgb.blue = colors[msgFontColor][2];

infoColor.rgb.red = colors[infoFontColor][0];
infoColor.rgb.green = colors[infoFontColor][1];
infoColor.rgb.blue = colors[infoFontColor][2];

//边框颜色
//alert("It has been written to " + frameColor);
kColor.rgb.red = colors[frameColor][0];
kColor.rgb.green = colors[frameColor][1];
kColor.rgb.blue = colors[frameColor][2];

//alert("It has been written to " + kColor.rgb.red);

//内边线色
fColor.rgb.red = colors[lineColor][0];
fColor.rgb.green = colors[lineColor][1];
fColor.rgb.blue = colors[lineColor][2];

if (body != '')
{
infoHeight = 20
}

if (lens != noLens)
{lens = builder.msgPnl.lens.et.selection.text + " ";}
else
{lens = '';}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//宽边时参数
var fLong = 1/10; //边框宽度与相片宽度的倍数

//窄边时参数
if (builder.msgPnl.frameWidthh.frameWidth2.value)
{
fLong = 1/40;
}


var defaultRulerUnits = preferences.rulerUnits;
preferences.rulerUnits = Units.PIXELS;

var resRatio = AD.resolution/72;

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

//定义参数
photoWidth = AD.width.value; //图片宽度
photoHeight = AD.height.value; //图片高度
var wFrame = AD.width.value + 4; //修改系数调整内框边线的宽度,单边实际宽度需除以2
var hFrame = AD.height.value + 4; //修改系数调整内框边线的高度,单边实际高度需除以2

var fWidth = parseInt(photoWidth*fLong); //边框底的宽度,单边实际宽度需除以2。

if (builder.msgPnl.sidewidth.sidewidth2.value)
{
// var fWidth = parseInt(photoWidth*0); //无侧边,图像两侧边宽度为0。

var fWidth = 0;
}

var fHeight = parseInt(photoWidth*fLong); //边框底的高度,单边实际高度需除以2。

var leftLogoWidth = 0;
var leftLogoHeight = 0;
var rightLogoWidth = 0;
var rightLogoHeight = 0;

//打印Logo时需要使用的参数
if (logoType != noLogo && logoFilePath != null)
{
if(builder.msgPnl.logo.logoSide2.value) //标签右面打印Logo
{
//alert("It has been written to " + logofile);
var logoPhoto = open(logofile);
rightLogoWidth = parseInt(logoPhoto.width);
rightLogoHeight = parseInt(logoPhoto.height);
logoPhoto.selection.selectAll(); //选择全部区域
logoPhoto.selection.copy(); //复制选择区域
logoPhoto.close(SaveOptions.DONOTSAVECHANGES); //关闭logoPhoto,不保存
var topLeftX = fWidth*0.5 + photoWidth + 1 - rightLogoWidth; //Logo左上角定位点X值
var topLeftY = fHeight*0.5 + photoHeight + 2 + 2; //Logo左上角定位点Y值。前面的2为内框线宽度,后面的2为间距
var docW = rightLogoWidth; //区域宽度
var docH = rightLogoHeight; //区域高度
//alert("It has been written to " + topLeftY);
}
else if(builder.msgPnl.logo.logoSide1.value) //标签左面打印Logo
{
var logoPhoto = open(logofile);
leftLogoWidth = parseInt(logoPhoto.width);
leftLogoHeight = parseInt(logoPhoto.height);
logoPhoto.selection.selectAll(); //选择全部区域
logoPhoto.selection.copy(); //复制选择区域
logoPhoto.close(SaveOptions.DONOTSAVECHANGES); //关闭logoPhoto,不保存
var topLeftX = fWidth*0.5 + 1 ; //Logo左上角定位点X值
var topLeftY = fHeight*0.5 + photoHeight + 2 + 2; //Logo左上角定位点Y值。前面的2为内框线宽度,后面的2为间距
var docW = leftLogoWidth; //区域宽度
var docH = leftLogoHeight; //区域高度
//alert("It has been written to " + topLeftX);
}
}

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

/*
//该工具提取相片的Exif完整信息为XML文件,并保存在c:\Exif.xml
var exifFileName = "c:\\Exif.xml";
var file = new File(exifFileName);
file.open('w');
file.writeln(exifData);
file.close();
alert("It has been written to " + exifFileName);
*/

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

var exposureTime = ""; //快门
var fNumber = ""; //光圈
var ISOSpeedRatings = ""; //ISO设置
var dateTimeOriginal = ""; //相片拍摄时间
var phoDate = ""; //拍摄日期
var phoTime = ""; //拍摄时间
var fired = ""; //闪光模式
var exposureBiasValue = ""; //曝光补偿
var focalLength = ""; //焦距
var model = ""; //相机型号
var i = 0;
var j = 0;
var k = 0;
var dateArray1 = "";
var dateArray2 = "";

//快门速度
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;
}
}

//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] == "FocalLength")
{
focalLength = 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;
}
}

//曝光补偿
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;
}
}


//转换闪光模式
if(fired != '')
{
if(fired == 'True')
{
fired = 'Fire ';
}
else
fired = 'No fire ';
}
else
fired = '';
//alert("It is " + fired);

//转换曝光补偿
if(exposureBiasValue != '')
{
if(parseInt(exposureBiasValue) != 0)
{
var dateArray1 = exposureBiasValue.split('/'); //用分隔符/产生数组
i = dateArray1[0];
j = dateArray1[1];
exposureBiasValue = parseInt(10*parseFloat(i/j))/10;
exposureBiasValue += 'EV ';
}
else
{
exposureBiasValue = '0EV ';
}
}
else
exposureBiasValue = '';

//转换焦距
if(focalLength != '')
{
var dateArray1 = focalLength.split('/'); //用分隔符/产生数组
i = dateArray1[0];
j = dateArray1[1];
focalLength = parseInt(10*parseFloat(i/j))/10;
focalLength = '@' + focalLength + 'mm ';
}

//检查快门速度
dateArray1 = exposureTime.split("/");
exposureTime = "";
if(dateArray1 != '') //有的图片没有快门值
{
j = dateArray1[0];
i = dateArray1[1];
if(j/i >= 1)
exposureTime = parseInt(j/i) + parseInt(10*(j-parseInt(j/i)*i)/i)/10 + "Sec";
else
{
i = parseInt(10*parseFloat(i/j))/10;
j = 1;
exposureTime = j + "/" + i + "S ";
}
}

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

if (fNumber != "") //有的图片没有光圈值
fNumber = "F/" + fNumber + " ";

//改变日期格式
dateArray1 = dateTimeOriginal.split("T");
if(dateArray1 != '') //有的图片没有日期值
{
phoDate = dateArray1[0] + " ";
phoTime = dateArray1[1];

//过滤时区信息。如果Exif里的时间无时区信息脚本运行提示这里出错,请把下面的4行代码用注释掉
dateArray2 = phoTime.split("+");
phoTime = dateArray2[0];

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


//检查勾选Exif项目。未勾选的置为空
if (! builder_msgPnl_photoInfo_infoModel_value) model = "";
if (! builder_msgPnl_photoInfo_infoShutter_value) exposureTime = "";
if (! builder_msgPnl_photoInfo_infoF_value) fNumber = "";
if (! builder_msgPnl_photoInfo_infoISO_value) ISOSpeedRatings = "";
if (! builder_msgPnl_photoInfo_infoT_value) exposureBiasValue = "";
if (! builder_msgPnl_photoInfo_infoFocal_value) focalLength = "";
if (! builder_msgPnl_photoInfo_infoFired_value) fired = "";
if (! builder_msgPnl_photoInfo_infoDate_value) phoDate = "";
if (! builder_msgPnl_photoInfo_infoTime_value) phoTime = "";

//定义黑色
var black = new SolidColor();
black.rgb.red = black.rgb.green = black.rgb.blue = 0;

//定义白色

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;

//在相片的外边加入一条边框线,内线颜色可以选择。
backgroundColor = fColor; //边框线颜色
AD.resizeCanvas(wFrame,hFrame, AnchorPosition.MIDDLECENTER);

//加入四边边框框底
backgroundColor = kColor;
AD.resizeCanvas(photoWidth + fWidth,photoHeight + fHeight, AnchorPosition.MIDDLECENTER); //可以修改参数获得不同的边框大小

//底部再加大点,便于写字,可以修改参数获得你需要的下边框大小
var addHeight = fHeight + parseInt(rFontSize) + parseInt(infoFontSize) + 6;
if (addHeight < 54) //限定最小加宽增加值,以防止选择最大号字体时出现高度不够
addHeight = 54;
AD.resizeCanvas(photoWidth + fWidth,photoHeight + addHeight,AnchorPosition.TOPCENTER);

//---------------- 标注主题文字开始 ----------------------
var nameLayer = AD.artLayers.add();
nameLayer.kind = LayerKind.TEXT;
var TI = nameLayer.textItem;
TI.justification = Justification.LEFT; //左对齐
TI.position = [fWidth/2 + leftLogoWidth,hFrame + fHeight/2 + parseInt(lFontSize)]; //设定主题文字位置
TI.contents = title; //文字的内容
TI.font = fontPSNames[builder.msgPnl.title.titleFontEt.selection.text]; //字体类型
TI.size = lFontSize; //字体大小,点数
TI.color = titleColor; //字体颜色,需预先定义
TI.fauxBold = true; //加粗
//---------------- 标注主题文字开始结束 ----------------------

//---------------- 标注说明文字开始  ----------------------
var msgLayer = AD.artLayers.add();
msgLayer.kind = LayerKind.TEXT;
var TI = msgLayer.textItem;
TI.justification = Justification.RIGHT; //右对齐
TI.position = [photoWidth + fWidth/2 - rightLogoWidth,hFrame + fHeight/2 + parseInt(rFontSize)]; //设定主题文字位置
TI.contents = body; //文字的内容
TI.font = fontPSNames[builder.msgPnl.msg.msgFontEt.selection.text]; //字体类型
TI.size = rFontSize; //字体大小,点数
TI.color = msgColor; //字体颜色,需预先定义
TI.fauxBold = true; //加粗
//---------------- 标注说明文字始结束  ----------------------

//---------------- 标注拍摄信息开始  ----------------------
var infoLayer = AD.artLayers.add();
infoLayer.kind = LayerKind.TEXT;
var TI = infoLayer.textItem;
TI.justification = Justification.RIGHT; //右对齐
var addRightHeight = parseInt(infoFontSize); //拍摄信息高度的定位值
if (body != "") //如果无有说明文字,则相应减少增加拍摄信息文字行的高度
{addRightHeight = parseInt(rFontSize) + parseInt(infoFontSize) + 6; }
TI.position = [photoWidth + fWidth/2 - rightLogoWidth,hFrame + fHeight/2 + addRightHeight]; //设定拍摄信息的位置,可以修改参数移动位
TI.contents = ""; //初始化值文字内容
TI.contents += model; //相机型号
TI.contents += lens; //镜头型号
TI.contents += exposureTime; //快门速度
TI.contents += fNumber; //光圈
TI.contents += ISOSpeedRatings; //ISO值。尼康相机拍摄的相片可能没有该值
TI.contents += exposureBiasValue; //曝光补偿
TI.contents += focalLength; //焦距
TI.contents += fired; //闪光模式
TI.contents += phoDate; //拍摄日期
TI.contents += phoTime; //拍摄时间
TI.font = fontPSNames[builder_msgPnl_lens_infoFontEt_selection_text]; //字体类型
TI.size = infoFontSize; //字体大小,点数
TI.color = infoColor; //字体颜色
TI.fauxBold = true; //加粗
//---------------- 标注拍摄信息结束  ----------------------

//最外边加入一条黑边线
//backgroundColor = black;
//AD.resizeCanvas(AD.width.value + 2,AD.height.value + 2, AnchorPosition.MIDDLECENTER);

//---------------------------打印Logo 开始---------------------------
if (logoType != noLogo  && logoFilePath != null)
{
var pointLT = Array(topLeftX,topLeftY); //左上角点
var pointRT = Array(topLeftX + docW,topLeftY); //右上角点
var pointRB = Array(topLeftX + docW,topLeftY + docH); //右下角点
var pointLB = Array(topLeftX,topLeftY + docH); //左下角点

var selRegion = Array(pointRT,pointRB,pointLB,pointLT); //定位区域,点顺序:右上角点,右下角点,左下角点,左上角点
AD.selection.select(selRegion); //选择区域
AD.paste(); //粘贴
//alert("It has been written to " + topLeftX);
}
//---------------------------打印Logo 结束---------------------------

AD.flatten(); //拼合图层

switch (frameSide) //将图片旋转回来
{
case 2:
app.activeDocument.rotateCanvas(-90.0);
break;
case 3:
app.activeDocument.rotateCanvas(90.0);
break;
}
}
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 65.362
主题: 9
帖子: 4036
注册: 2005年5月
月赛优胜标识
都是〔i〕惹的祸。
脚本如下(拷贝粘贴内容,注意不要将最后的“

[逸之 编辑于 2009-01-27 12:14]
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 65.362
主题: 9
帖子: 4036
注册: 2005年5月
月赛优胜标识
那位知道为什么第6行开始变码?
[code]
{
if (! fontPSNames[fonts.family])
{
[/code]

[逸之 编辑于 2009-01-27 11:51]
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 65.362
主题: 9
帖子: 4036
注册: 2005年5月
月赛优胜标识
//读取系统字体,定义字体名称及PostScript name of the font
var myFonts = new Array();
var fontPSNames = new Array();
for (i = 0;i < fonts.length;i ++)
{
if (! fontPSNames[fonts.family])
{
fontPSNames[fonts[i].family] = fonts[i].postScriptName;
myFonts.push(fonts[i].family);
}
}

var builder = createBuilderDialog(); //定义对话框内容
initializeBuilder(builder); //初始化状态值
if (runBuilder(builder) == 1)
{
var resSpec = createFrame(builder); //创建边框
}
//------------- Main script End -------------

[逸之 编辑于 2009-01-27 11:44]
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
回复主题: 数码相片Exif边框脚本俱乐部
功能受限
游客无回复权限,请登录后再试