请选择 进入手机版 | 继续访问电脑版
收藏本站腾讯微博新浪微博
点点网模板设计大赛 phpchina

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 用悬赏 三天解决问题 解决访问速度慢 论坛支持农历生日 - 给官方提建议

论坛活动及任务 归纳网站最新活动 地图任务 邮件更新任务:保护帐号安全

积分换实物,来参加蓝色理想积分兑换吧! 联系招聘客服 蓝色理想帮你找工作! 万元奖励等你拿——点点网模板设计大赛

查看: 58991|回复: 143

[作品] 批量更改图片尺寸的ps脚本 ---3月29日 更新 v2.0 - 增加水印功能 [复制链接]

xiexienila 楼主
帖子
1204
体力
1923
威望
41
发表于 2008-2-20 18:09:28 |显示全部楼层
用于批量更改打开的图片的尺寸的photoshop 脚本 (javascript)。

v1.0版本 (旧版不提供下载了,需要的请参考下面楼层的代码段)

操作对象:
当前打开的所有文档;
(注意不要有尚未保存过的新建的文档,或无法直接保存的文档,否则会中断批处理)

用法:
把解压出来的 “改变尺寸.jsx” 文件复制到 “ps安装目录\预置\脚本” 下,重新打开ps以后就可以在~
[菜单- 文件-脚本] 里面找到 “改变尺寸”

或者解压出来,在开着ps的情况下,直接双击也可以用。



操作结果:
直接覆盖保存并关闭文档。(最好复制一个文件夹,然后再打开图片执行这个操作,不然就没有原始文件喽)

~~~~~~~~~~ 目前只在cs3中文版上测试通过

若其他ps版本有问题,或者有什么bug还请多多反馈!谢谢!
对这个没什么研究,刚学~尚苦于没有资料,更欢迎高人多多指点

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2月23日 更新内容

v1.11版本

可以把当前文档(包括未保存过的)直接修改尺寸并保存为jpg。(注意会关闭当前文档!)
可以针对整个文件夹进行操作。(程序设定为“不包括隐藏文件”,因此不想处理和不能处理的文件可以先设置为[隐藏]属性)
可选择另存jpg 至另一个文件夹。
另存时支持文件名前后添加字符。

更新在28楼 (旧版不提供下载了,需要的请参考下面楼层的代码段)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3月2日 更新内容


v1.21 更新:
1、增添了3种另存格式:gif、psd、tiff。
2、添加了处理进度条,在大量文件处理的时候对进度掌握更好。(3月2日修正了隐藏文件导致进度条不准的bug)
3、修改了改变尺寸的算法,允许对不需要控制的尺寸留空(小于1或不填写即为留空,留空值将根据选项 不改变或者等比计算)
4、添加了about ,鸣谢了几位给于帮助的朋友

更新在54楼




~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3月29日 更新内容

v2.0版本下载

v2.0 更新:
1、加了水印添加功能。
可以平铺或添加独个的水印;并可以使用ps众多的图层混合模式。
2、修正了1.2版本保存gif 格式时颜色位数错误的bug (强烈建议更新至2.0版本)

如果有朋友问:想要半透明水印怎么办?想要倾斜水印怎么办?
答:把水印文件做成半透明(保存为png或者psd 之类)和倾斜的即可,脚本界面就不另外放置参数了。

更新在61楼,请喜欢的朋友下载v2.0版本



[ 本帖最后由 wonton 于 2008-3-29 23:08 编辑 ]
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
已有 1 人评分威望 收起 理由
wonton + 2 支持

总评分: 威望 + 2   查看全部评分

西部数码顶级域名注册商39元抢注!
xiexienila 楼主
帖子
1204
体力
1923
威望
41
发表于 2008-2-20 18:14:44 |显示全部楼层
忘了说了,比较适合统一处理 有横有竖混在一起的照片

这是做这个脚本的初衷
租服务器,上51IDC | [长沙]招聘:PHP经理10K/WEB前端6K/PHP开发6K

使用道具 举报

froglt 

网页顽主

版主 手机认证 

帖子
3303
体力
215
威望
168
发表于 2008-2-20 18:32:32 |显示全部楼层
好东西,支持~!
(\/)︵ ◦۩۞۩◦
(·_ _ )~GO2HERE.NET/GO2HERE.NET.CN MORE THAN MEETS THE EYE
网页设计全书

使用道具 举报

No01 

咚咚吆

金牌会员

帖子
5175
体力
3419
威望
1
发表于 2008-2-20 18:59:25 |显示全部楼层
正有一批产品图片需要处理  哎呀 就这么遇到了   么么楼主一下  
我已不在江湖 江湖还在为了一些破浏览器争论着..

使用道具 举报

Manb 
帖子
67
体力
120
威望
0
居住地
广东省 深圳市
发表于 2008-2-20 19:58:00 |显示全部楼层

努力

学学了!!

使用道具 举报

xiexienila 楼主
帖子
1204
体力
1923
威望
41
发表于 2008-2-21 09:10:04 |显示全部楼层

附上代码,方便大家指正

  1. #target photoshop
  2. app.bringToFront();

  3. // 带自动判断横竖的统一长宽操作,对当前所有打开文档进行操作。因为是直接保存关闭,原文件要注意备份!

  4. if (app.documents.length == 0){
  5.         alert("请打开至少一个文件");
  6. }else{

  7. var PRESOLUTION = 72;
  8. app.preferences.rulerUnits = Units.PIXELS;
  9.                
  10. res ="dialog { \
  11. text:'批量尺寸调整 - 直接覆盖保存-请注意备份',\
  12.         group: Group{orientation: 'column',alignChildren:'left',\
  13.                 corrdination: Panel { orientation: 'row', \
  14.                         text: '需要尺寸', \
  15.                                 x: Group { orientation: 'row', \
  16.                                         s: StaticText { text:'长:' }, \
  17.                                         e: EditText { preferredSize: [50, 20] } ,\
  18.                                         p: StaticText { text:'pixel' }, \
  19.                                         }, \
  20.                                 y: Group { orientation: 'row', \
  21.                                         s: StaticText { text:'宽:' }, \
  22.                                         e: EditText { preferredSize: [50, 20] }, \
  23.                                         p: StaticText { text:'pixel' }, \
  24.                                         } \
  25.                                 },  \
  26.                                                 a:Group{ orientation: 'row', \
  27.                                                                 c: Checkbox { preferredSize: [16, 16]} ,\
  28.                                                                 s: StaticText {text:'保持原图长宽比,新尺寸仅作外框限定'},\
  29.                                                                 }, \
  30.                                                 b:Group{ orientation: 'row', \
  31.                                                                 c: Checkbox { preferredSize: [16, 16]} ,\
  32.                                                                 s: StaticText {text:'不判断原图横竖'},\
  33.                                                                 }, \
  34.                                 },\
  35.         buttons: Group { orientation: 'row', alignment: 'right',\
  36.                 Btnok: Button { text:'确定', properties:{name:'ok'} }, \
  37.                 Btncancel: Button { text:'取消', properties:{name:'cancel'} } \
  38.                 } \
  39. }";

  40. win = new Window (res);

  41. win.buttons.Btncancel.onClick = function () {
  42. this.parent.parent.close();
  43. }
  44. win.group.a.c.onClick = function(){ //如果勾选了a,则b被锁定
  45.                 if(win.group.a.c.value){
  46.                                 win.group.b.c.value=true;
  47.                 }
  48. }
  49. win.group.b.c.onClick = function(){
  50.                 if(win.group.a.c.value){
  51.                                 win.group.b.c.value=true;
  52.                 }
  53. }

  54. win.buttons.Btnok.onClick = function () {
  55.        
  56.                                 var x=Number(win.group.corrdination.x.e.text);
  57.                                 var y=Number(win.group.corrdination.y.e.text);
  58.                                 var a=win.group.a.c.value;
  59.                                 var b=win.group.b.c.value; //选中则不颠倒横竖,以输入值为准
  60.                                
  61.                                 if (!b && x<y){  //确保PW>=PH
  62.                                                 var PW=y
  63.                                                 var PH=x
  64.                                                 }else{
  65.                                                 var PW=x
  66.                                                 var PH=y
  67.                                                 }       
  68.         while (app.documents.length){
  69.         var docRef = app.activeDocument; // 当前活动文档为操作对象       

  70.                                 var dw = docRef.width;
  71.                                 var dh = docRef.height;

  72.                                 var fw = PW;
  73.                                 var fh = PH;

  74.                                 if(!b && dh>dw){
  75.                                         fw = PH;
  76.                                         fh = PW;
  77.                                 }
  78.                                 if(a){
  79.                                         w1 =dw/fw;
  80.                                         h1 =dh/fh;
  81.                                         if(w1>h1){
  82.                                                 fh =dh/w1;       
  83.                                         }else{
  84.                                                 fw =dw/h1;
  85.                                         }
  86.                                 }
  87.                 docRef.resizeImage(fw, fh, PRESOLUTION, ResampleMethod.BICUBIC);
  88.                 docRef.save();
  89.                 docRef.close(); //关闭当前文档
  90. }
  91. this.parent.parent.close();
  92. }

  93. win.center();
  94. win.show();
  95. }
复制代码

使用道具 举报

webos 

网络泥水匠

高级会员 手机认证 

帖子
140
体力
811
威望
0
居住地
浙江省 金华市
发表于 2008-2-21 09:26:19 |显示全部楼层
不错   支持下  

使用道具 举报

设计虐菜队长

高级会员 手机认证 

帖子
149
体力
703
威望
0
居住地
河南省 开封市
发表于 2008-2-21 09:42:16 |显示全部楼层
我汗,你怎么这么及时,春节照几百张照片各个都是3072×2304,我还正发愁如何处理呢。哈哈

使用道具 举报

xiexienila 楼主
帖子
1204
体力
1923
威望
41
发表于 2008-2-21 09:44:18 |显示全部楼层
  其实一起打开效率还是比较低的,尤其配置不好的机器~
照片方向一致的话,还是推荐大家用ps原本的“文件-脚本-图像处理器”。

有空再修改一下,今天忙 希望用过的朋友积极反馈意见!谢谢

[ 本帖最后由 xiexienila 于 2008-2-21 09:48 编辑 ]

使用道具 举报

帖子
857
体力
1689
威望
7
发表于 2008-2-21 10:20:57 |显示全部楼层
photoshop 用到这种程度  很强 !!!

使用道具 举报

帖子
16
体力
46
威望
0
居住地
广东省 潮州市
发表于 2008-2-21 11:09:53 |显示全部楼层
我现在每天都调好多相..楼主这个可惜我用不到...横竖太多而且颜色也得亲自调.快快来个超强的脚本吧.会自动调色和自动按横竖裁图片的吧...........哈哈.那时我就可以做着喝咖啡看着电脑调相了

使用道具 举报

xiexienila 楼主
帖子
1204
体力
1923
威望
41
发表于 2008-2-21 11:33:37 |显示全部楼层
  裁切和调色 都是靠人的啊,自动效果不敢想象,呵呵

使用道具 举报

帖子
69
体力
151
威望
0
居住地
江苏省 苏州市
发表于 2008-2-21 13:01:53 |显示全部楼层
一直很敬佩你哦,xiexienila

使用道具 举报

空空要要

银牌会员

帖子
446
体力
1858
威望
0
居住地
四川省 成都市
发表于 2008-2-21 14:00:52 |显示全部楼层
你神了


以前我是用动作来批量改大小的,结果有横有竖的,搞得好麻烦
来剩男的怀里,或者,让剩女住进你心里

使用道具 举报

帖子
308
体力
1617
威望
0
居住地
湖北省 武汉市
发表于 2008-2-21 16:28:55 |显示全部楼层
只用过PS里的动作,这脚本还是第一次用,厉害

使用道具 举报

我爱蓝色

荣誉管理 手机认证 

帖子
3000
体力
14970
威望
51
居住地
广东省 广州市
发表于 2008-2-21 16:46:21 |显示全部楼层
CS3正版DVD中有4个PDF是介绍脚本的,全英文的,楼主你有吗,没有PM我我发给你,支持你再丰富这个脚本的内容。

还有CS3的套装还有一个ExtendScript Toolkit 2这个软件,是专门编写脚本的,里面有所有你安装的ADOBE的软件的函数库

[ 本帖最后由 XYBLUEIDEA 于 2008-2-21 16:48 编辑 ]
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
技术+创意+审美+细心=设计成功的法宝

使用道具 举报

xiexienila 楼主
帖子
1204
体力
1923
威望
41
发表于 2008-2-21 16:49:45 |显示全部楼层

回复 #17 XYBLUEIDEA 的帖子

谢谢,都用到了,不过还是很吃力。

呵呵,现在正在用 ExtendScript Toolkit 2 写一个 重复执行任意动作的脚本,就快成功了,差一个快照~
函数库还不会用,没什么编程经验,对库感觉比较郁闷。我就拿工具当作带高亮显示的记事本 (浪费啊

现阶段就是连抄带改带蒙(今天居然叫我蒙对好几个写法

[ 本帖最后由 xiexienila 于 2008-2-21 16:51 编辑 ]

使用道具 举报

我爱蓝色

荣誉管理 手机认证 

帖子
3000
体力
14970
威望
51
居住地
广东省 广州市
发表于 2008-2-21 16:55:39 |显示全部楼层
加油,毕竟现在也没有中文的脚本教程,孤军做战,挺难的。

要是有什么需要我帮助的,PM我,我尽我所能帮你
技术+创意+审美+细心=设计成功的法宝

使用道具 举报

帖子
1001
体力
13535
威望
32
发表于 2008-2-21 19:37:07 |显示全部楼层
很厉害啊。跟我平时用的微软的powertoys里的image resizer有点像,试试看

使用道具 举报

阿蒙DOS

钻石会员 手机认证 

帖子
2459
体力
23010
威望
12
居住地
河南省 洛阳市
发表于 2008-2-21 20:03:44 |显示全部楼层
程序白痴*____*
xiexienila同志 谢谢你啦~
天行键,君子以自强不息

使用道具 举报

文刀

高级会员

帖子
417
体力
1371
威望
0
居住地
山东省 临沂市
发表于 2008-2-21 21:34:03 |显示全部楼层
一直很佩服你,用动作也可以吧,请问脚本与动作做这个批处理有什么不同吗,
你有什么不开心的事? 说出来让大家开心一下.

使用道具 举报

帖子
155
体力
316
威望
0
居住地
四川省 成都市
发表于 2008-2-21 21:37:38 |显示全部楼层
自己不懂
友情支持
4WD

使用道具 举报

wonton 

馄饨

荣誉管理

帖子
6131
体力
15919
威望
105
居住地
浙江省 杭州市
发表于 2008-2-22 07:59:42 |显示全部楼层

回复 #21 wndao009 的帖子

  动作无法执行判断和循环阿。 比如说我就常用动作处理图片尺寸,不过要先按照横竖,分拣成两个文件夹~

有了xiexienila 这个脚本,就方便了。不错
发帖前请搜索,回帖前请仔细看清楼上每一层。大家的批评意见要虚心接受。有错误要积极承认。 论坛的交流气氛要和谐!内容重复和无实际意义的帖子要少发。

使用道具 举报

very4u 

傻忽忽

高级会员

帖子
143
体力
677
威望
0
居住地
福建省 厦门市
发表于 2008-2-22 11:56:33 |显示全部楼层
photoshop 用到这种程度  很强 !!!

使用道具 举报

sopooo 

腐烂创意

钻石会员 手机认证 

帖子
1210
体力
8988
威望
33
居住地
广东省 广州市
发表于 2008-2-22 12:19:57 |显示全部楼层
ACDSee有这个功能。呵呵

使用道具 举报

xin266 
帖子
194
体力
565
威望
0
居住地
河南省 南阳市
发表于 2008-2-22 15:29:16 |显示全部楼层
还好我电脑速度好凑合

不然就惨了 谢谢 共享

使用道具 举报

帖子
37
体力
84
威望
0
发表于 2008-2-22 15:48:58 |显示全部楼层
批量修改图片尺寸是有时会遇到的任务,以前都是用最笨的方法一张一张打开来改,现在有了好东东!
先下下来,回头用用。谢谢楼主分享。

使用道具 举报

xiexienila 楼主
帖子
1204
体力
1923
威望
41
发表于 2008-2-23 02:15:15 |显示全部楼层

经过几乎一天的折腾,终于完善了一点点功能

  看到还有不少朋友用得上,就想花点时间完善一下,没想到这么简单一个东西都这么累~~

http://www.ps-scripts.com/
不少东西都是从这里找到的,虽然都是些零散的关键字,但给进一步查找搜索[脚本指南]制造了条件。
并且由于[脚本指南]缺少例句,很多写法也都是这里搜索到的,另外就是猜测实验出来的。
终于感觉到学好英文是多么幸福啊~~~~~

由于可能的组合多了好多,测试也许不尽周全,希望大家发现问题及时反馈!
再次谢谢!!



(旧版本不提供下载了,需要的请参考楼下代码)

[ 本帖最后由 wonton 于 2008-3-3 17:02 编辑 ]
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

xiexienila 楼主
帖子
1204
体力
1923
威望
41
发表于 2008-2-23 02:19:01 |显示全部楼层

希望帮忙修改一下一楼,说明楼上有更新!

  1. #target photoshop
  2. app.bringToFront();

  3. // 带自动判断横竖的统一长宽操作。默认是直接保存关闭,原文件要注意备份! v1.11 - 2008.2.23

  4. var PRESOLUTION = 72;
  5. app.preferences.rulerUnits = Units.PIXELS;
  6.                
  7. res ="dialog { \
  8. text:'批量尺寸调整 ',\
  9.         group: Group{orientation: 'column',alignChildren:'left',\
  10.                                 top:StaticText{text:'默认为直接覆盖保存 - 请注意选择或做好备份',align:'left'},\
  11.                                 corrdination: Panel { orientation: 'row', \
  12.                         text: '需要尺寸', \
  13.                                 x: Group { orientation: 'row', \
  14.                                         s: StaticText { text:'宽:' }, \
  15.                                         e: EditText { preferredSize: [50, 20] } ,\
  16.                                         p: StaticText { text:'px' }, \
  17.                                         }, \
  18.                                 y: Group { orientation: 'row', \
  19.                                         s: StaticText { text:'高:' }, \
  20.                                         e: EditText { preferredSize: [50, 20] }, \
  21.                                         p: StaticText { text:'px' }, \
  22.                                         } ,\
  23.                                 }, \
  24.                                 a:Group{ orientation: 'row', \
  25.                                                                 c: Checkbox { preferredSize: [16, 16]} ,\
  26.                                                                 s: StaticText {text:'保持原图长宽比,新尺寸仅作外框限定'},\
  27.                                                                 }, \
  28.                                 b:Group{ orientation: 'row', \
  29.                                                                 c: Checkbox { preferredSize: [16, 16]} ,\
  30.                                                                 s: StaticText {text:'不判断原图横竖'},\
  31.                                                                 }, \
  32.                                 now:Group{ orientation: 'row', \
  33.                                                                 c: Checkbox { preferredSize: [16, 16]} ,\
  34.                                                                 s: StaticText {text:'对文件夹进行操作(否则处理所有目前打开的文档)'},\
  35.                                                                 }, \
  36.                                 folderO:Group{ orientation: 'row', \
  37.                                                                 b: Button {text:'待处理文件夹', properties:{name:'open'} ,helpTip:'选择您需要处理的文件所在的文件夹'},\
  38.                                                                 s: EditText  { text:'', preferredSize: [180, 20] },\
  39.                                                                 },\
  40.                                 other:Group{ orientation: 'row', \
  41.                                                                 c: Checkbox { preferredSize: [16, 16]} ,\
  42.                                                                 s: StaticText {text:'启用另存 (jpg格式)'},\
  43.                                                                 }, \
  44.                                 otherSet: Panel {orientation: 'column',alignChildren:'left',\
  45.                         text: '另存设置', \
  46.                                                 Quality: Group { orientation: 'row',  \
  47.                                                                         s: StaticText { text:'Jpeg压缩质量:' }, \
  48.                                                                         e: EditText { preferredSize: [30, 20] ,text:'7'} ,\
  49.                                                                         s: StaticText { text:'(0-12,数值越大质量越高)' }, \
  50.                                                                         }, \
  51.                                                 head: Group { orientation: 'row',  \
  52.                                                                         s: StaticText { text:'在文件名前添加字符:' }, \
  53.                                                                         e: EditText { preferredSize: [50, 20] } ,\
  54.                                                                         }, \
  55.                                                 foot: Group { orientation: 'row',  \
  56.                                                                         s: StaticText { text:'在文件名后添加字符:' }, \
  57.                                                                         e: EditText { preferredSize: [50, 20] }, \
  58.                                                                         } ,\
  59.                                                 otherF:Group{ orientation: 'row', \
  60.                                                                         c: Checkbox { preferredSize: [16, 16]} ,\
  61.                                                                         s: StaticText {text:'另存至其他文件夹'},\
  62.                                                                         }, \
  63.                                                 folderS:Group{ orientation: 'row', \
  64.                                                                         b: Button {text:'另存至', properties:{name:'save'} ,helpTip:'选择您处理好的文件要保存至的文件夹'},\
  65.                                                                         s: EditText  { text:'', preferredSize: [180, 20] },\
  66.                                                                         },\
  67.                                                 },\
  68.                                 },\
  69.         buttons: Group { orientation: 'row', alignment: 'right',\
  70.                 Btnok: Button { text:'确定', properties:{name:'ok'} }, \
  71.                 Btncancel: Button { text:'取消', properties:{name:'cancel'} } \
  72.                 }, \
  73. }";

  74. win = new Window (res);

  75. win.buttons.Btncancel.onClick = function () {
  76. this.parent.parent.close();
  77. }

  78. function lock_b(){  //如果勾选了a,则b被锁定
  79.                 if(win.group.a.c.value){
  80.                                 win.group.b.c.value=true;
  81.                 }
  82.         }
  83. win.group.a.c.onClick =function() { lock_b()};
  84. win.group.b.c.onClick =function() { lock_b()};

  85. // 打开文件夹的操作
  86. var folderOpen=win.group.folderO
  87. var folderSave=win.group.otherSet.folderS

  88. folderOpen.b.onClick = function() {
  89.                 var defaultFolder = folderOpen.s.text;
  90.                 var testFolder = new Folder(defaultFolder);
  91.                 if (!testFolder.exists) {
  92.                         defaultFolder = "~";
  93.                 }
  94.                 var selFolder = Folder.selectDialog("选择待处理文件夹", defaultFolder);
  95.                 if ( selFolder != null ) {
  96.                 folderOpen.s.text = selFolder.fsName;
  97.                         folderOpen.s.helpTip = selFolder.fsName.toString();
  98.             }
  99. }
  100. folderSave.b.onClick = function() {
  101.                 var defaultFolder = folderSave.s.text;
  102.                 var testFolder = new Folder(defaultFolder);
  103.                 if (!testFolder.exists) {
  104.                         defaultFolder = "~";
  105.                 }
  106.                 var selFolder = Folder.selectDialog("选择要储存至的文件夹", defaultFolder);
  107.                 if ( selFolder != null ) {
  108.                 folderSave.s.text = selFolder.fsName;
  109.                         folderSave.s.helpTip = selFolder.fsName.toString();
  110.             }
  111. }
  112. // 初始化选项
  113. win.group.folderO.enabled =false;
  114. win.group.otherSet.enabled =false;

  115. //操作文件夹开关
  116. win.group.now.c.onClick =function(){
  117.         if (win.group.folderO.enabled) {
  118.                 win.group.folderO.enabled =false;
  119.                 }else{
  120.                 win.group.folderO.enabled =true;
  121.                 }
  122. }
  123. //另存开关
  124. win.group.other.c.onClick =function(){
  125.         if (win.group.otherSet.enabled) {
  126.                 win.group.otherSet.enabled =false;
  127.                 }else{
  128.                 win.group.otherSet.enabled =true;
  129.                 if (!win.group.otherSet.otherF.c.value) {win.group.otherSet.folderS.enabled =false}
  130.                 }
  131. }
  132. //另存至文件夹开关
  133. win.group.otherSet.otherF.c.onClick =function(){
  134.         if (win.group.otherSet.folderS.enabled) {
  135.                 win.group.otherSet.folderS.enabled =false;
  136.                 }else{
  137.                 win.group.otherSet.folderS.enabled =true;
  138.                 }
  139. }


  140. // 实际处理开始
  141. function newsize(docRef,a,b,PW,PH){ //改变图象尺寸函数
  142.                         var dw = docRef.width;
  143.                         var dh = docRef.height;

  144.                         var fw = PW;
  145.                         var fh = PH;

  146.                         if(!b && dh>dw){
  147.                                 fw = PH;
  148.                                 fh = PW;
  149.                         }
  150.                         if(a){
  151.                                 w1 =dw/fw;
  152.                                 h1 =dh/fh;
  153.                                 if(w1>h1){
  154.                                         fh =dh/w1;       
  155.                                 }else{
  156.                                         fw =dw/h1;
  157.                                 }
  158.                         }
  159.         docRef.resizeImage(fw, fh, PRESOLUTION, ResampleMethod.BICUBIC);
  160. }

  161. function save(docRef) {        //储存函数
  162.                 if (win.group.other.c.value){ //判断是否另存
  163.                        
  164.                                 docRef.flatten() ;//合并图层,以储存jpg
  165.                                 docRef.changeMode(ChangeMode.RGB); // 更改为rgb模式,避免其它模式无法储存                               
  166.                                 var jpegOptions = new JPEGSaveOptions();
  167.                                 var setquality = Number(win.group.otherSet.Quality.e.text);
  168.                                 if (setquality>12) {
  169.                                         setquality=12;
  170.                                 }else if (setquality<0) {
  171.                                         setquality=0;
  172.                                 }
  173.                                 jpegOptions.quality = setquality;
  174.                                
  175.                                 // 获取另存文件夹及前后追加字段
  176.                                 var headWord = win.group.otherSet.head.e.text;
  177.                                 var footWord = win.group.otherSet.foot.e.text;       
  178.                                
  179.                                 if (win.group.otherSet.otherF.c.value){ //如果选中另存至文件夹
  180.                                                         if (win.group.otherSet.folderS.s.text){
  181.                                                                 var saveFolder = win.group.otherSet.folderS.s.text+"/";       
  182.                                                         }else{       
  183.                                                                 var saveFolder = docRef.path+"/newsize_";  //容错,避免没有具体选择另存到那个文件夹
  184.                                                         }
  185.                                 }else{
  186.                                                         if (headWord || footWord){
  187.                                                                 var saveFolder = docRef.path+"/";
  188.                                                         }else{
  189.                                                                 var saveFolder = docRef.path+"/newsize_"; //容错,避免没有添加前后缀而保存在本文件夹
  190.                                                         }
  191.                                 }
  192.                                                                
  193.                         docRef.saveAs(new File(saveFolder + headWord +docRef.name.substring(0,docRef.name.lastIndexOf('.'))  + footWord + ".jpg"),jpegOptions);        //设定输出文件名称                       
  194.                 }else{
  195.                         docRef.save();
  196.                 }
  197.                 docRef.close(SaveOptions.DONOTSAVECHANGES); //关闭当前文档       
  198. }

  199. win.buttons.Btnok.onClick = function () {       
  200.                 var x=Number(win.group.corrdination.x.e.text);
  201.                 var y=Number(win.group.corrdination.y.e.text);
  202.                 var a=win.group.a.c.value;
  203.                 var b=win.group.b.c.value; //选中则不颠倒横竖,以输入值为准
  204.                
  205.                 if (!b && x<y){  //确保PW>=PH
  206.                                 var PW=y
  207.                                 var PH=x
  208.                                 }else{
  209.                                 var PW=x
  210.                                 var PH=y
  211.                                 }       
  212.                        
  213.                 if (!win.group.now.c.value) {  // 当前活动文档为操作对象       
  214.                                 while (app.documents.length){
  215.                                                 var docRef = app.activeDocument;
  216.                                                 newsize(docRef,a,b,PW,PH);
  217.                                                 save(docRef);
  218.                                 }
  219.                 }else{ // 文件夹为操作对象                       
  220.                                 var openFolder = Folder(win.group.folderO.s.text);                               
  221.                                 var fileList = openFolder.getFiles() //获取open文件夹下所有文件
  222.                                 for (i=0;i<fileList.length;i++){
  223.                                         if (fileList[i] instanceof File && fileList[i].hidden == false){ //不处理隐藏文件
  224.                                                 open(fileList[i]);
  225.                                                 var docRef = app.activeDocument;
  226.                                                 newsize(docRef,a,b,PW,PH);
  227.                                                 save(docRef);
  228.                                         }
  229.                                 }
  230.                 }
  231. this.parent.parent.close();
  232. }

  233. win.center();
  234. win.show();
复制代码


~~~~~~~~~~~~~~~
已修改,顶楼已作说明!
------- wonton留


[ 本帖最后由 wonton 于 2008-2-23 20:03 编辑 ]

使用道具 举报

我爱蓝色

荣誉管理 手机认证 

帖子
3000
体力
14970
威望
51
居住地
广东省 广州市
发表于 2008-2-23 03:47:58 |显示全部楼层
越来越强大了,大家给你提些意见你丰富下,把它做成一个居家旅行必备的脚本
技术+创意+审美+细心=设计成功的法宝

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|安久科技提供CDN|blueidea.com ( 京ICP备05002321号 )  

GMT+8, 2012-2-13 07:43 , Processed in 0.175156 second(s), 9 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部