开启左侧

photoshop CS3脚本入门

[复制链接]
发表于 2012-2-15 01:57:53 | 显示全部楼层 |阅读模式
这个入门教程实际上只是我阅读photoshop中自带的文档Photoshop CS3 Scripting Guide.pdf的一点笔记,如果你有兴趣,英文还可以,可以直接阅读这本文档。对于Photoshop中的脚本,本人也是刚刚接触,因为对于设计人员,编程并不是熟悉的领域,本文自然十分简单,只为引起大家的兴趣,权当抛砖引玉。如果文中有任何错误,希望大家批评指正。

photoshop提供了几种任务自动化的功能,其中包括动作、批处理和脚本。动作可以记录一些列的操作动作和选项,但这些步骤都必须是线性的,没有根据具体图像的情况来提供可供选择的操作。photoshop预设了一些常用的批处理任务,同时用户也可以根据动作来创建快捷批处理,这种批处理实际上也和动作存在同样的局限性。而脚本对文档的自动化处理则是最强大的,与动作相比,它提供了更多的可能性。他可以执行逻辑判断,重命名文档等操作,同时脚本文件更便于携带并重用。

photoshop提供了3中脚本语法,分别是AppleScript(Mac平台),JavaScript扩展脚本(Mac平台和Windows平台),VBScript(Windows平台)。这里的示例采用的是通用的JavaScript扩展脚本,如果你编写过HTML中的JavaScript或者Flash平台中的ActionScript脚本,那么如下代码很容易理解。

这里没有详细介绍JavaScript的语法,因为photoshop中的JavaScript扩展脚本也是参照于ECMAScript标准来实现的,它们的核心部分是相同的,photoshop只是添加了photoshop的DOM接口。如果你不熟悉JavaScript,那么任何一本介绍了“核心JavaScript”的书籍或网站都可以作为一个很好的参考。

废话少说,开始第一个脚本吧。
打开一个常用的文本编辑器(记事本即可),键入如下代码:
  1. var originalUnit = preferences.rulerUnits
  2. preferences.rulerUnits = Units.PIXELS
  3. var docRef = app.document.add(200, 200)
  4. var artLayerRef = docRef.artLayers.add()
  5. artLayerRef.kind = LayerKind.TEXT
  6. var textItemRef = artLayerRef.textItem
  7. textItemRef.contents = "Hello world!"
  8. docRef = null
  9. artLayerRef = null
  10. textItemRef = null
  11. app.preferences.rulerUnits = originalUnit
  12. 复制代码
复制代码
然后保存文件,后缀名为.jsx,例如“helloworld.jsx”。
打开Photoshop,文件——脚本——浏览,找到这个脚本文件,然后载入,看看效果吧。可以看到,脚本可以创建新的文档,同时可以创建新的图层,并操作图层的内容。很好很强大是吧。

下面对于上段代码的解释:
photoshop中提供了DOM来作为脚本语言编程的接口,通过这些接口来进行操作。DOM类似与一个属性结构,它的根就是Application,即photoshop,在Photoshop CS3 Scripting Guide中提供了一幅图,很清晰的说明了photoshop中DOM的结构,如下:
20080908_d76f7c3fb6f45726caa3F51DkjYTLlfT.gif
我们几乎所有的脚本都是同这些对象打交道。我们通过“helloworld.jsx”这个例子来说明。(添加了注释,最好参照上图查看)
  1. /*
  2. 保存当前设置的单位
  3. 然后将单位设置为像素
  4. */
  5. var originalUnit = preferences.rulerUnits;
  6. preferences.rulerUnits = Units.PIXELS;
  7. /*
  8. 创建一个新的文档,宽高都为200px
  9. */
  10. var docRef = app.documents.add(200, 200);
  11. /*
  12. 为新文档添加一个新层
  13. 设置层的类型为TEXT
  14. */
  15. var artLayerRef = docRef.artLayers.add();
  16. artLayerRef.kind = LayerKind.TEXT;
  17. /*
  18. 设置文本内容为 "Hello world!"
  19. */
  20. var textItemRef = artLayerRef.textItem;
  21. textItemRef.contents = "Hello, World";
  22. /*
  23. 清除对象的引用
  24. */
  25. docRef = null
  26. artLayerRef = null
  27. textItemRef = null
  28. /*
  29. 将预设单位恢复为原来的默认值
  30. */
  31. app.preferences.rulerUnits = originalUnit;
  32. 复制代码
复制代码
并不是很难,对吧。

脚本的重用
就像刚才所演示的,我们可以将脚本保存到任何地方,然后通过浏览来找到脚本。但是更好的方法是将脚本添加到photoshop的脚本菜单中,这样更易于管理。
要实现这种方式的话很简单,将“helloworld.jsx”放到photoshop的安装目录下的Presets\Scripts文件夹中即可。重新启动photoshop,你就会在文件——脚本菜单中直接使用这个脚本了。


参考书的使用
对于“Helloworld”的示例,我们想做一点改动。如
preferences.rulerUnits = Units.PIXELS;
我想改成另外的单位,例如厘米。
打开Photoshop CS3 JavaScript Ref文档,在第三部分 Scripting Constants 下找到 Units。
20080908_5386d067ee04588788adIPUFQKyJGpAF.gif
我们看到Units中定义了几个常量,按我们的要求只需做如下改动
preferences.rulerUnits = Units.CM;
尝试保存,测试一下看看效果。

Photoshop CS3 JavaScript Ref文档中的参考主要分为4个部分
1、介绍
2、对象参考
3、常量参考
4、语法参考及其他
编写脚本的时候肯定会用到的,记得随时参考啊。

现在你也可以开始编写自己的Photoshop脚本了。
平度网:www.pingdu.co 平度论坛:bbs.pingdu.co
发表于 2012-2-15 01:57:54 | 显示全部楼层
不错的东西,对于批量处理尤为实用。
平度网:www.pingdu.co 平度论坛:bbs.pingdu.co
发表于 2012-2-15 01:57:56 | 显示全部楼层
第一段代码有小错误,
第三行 var docRef = app.document.add(200, 200)中document应为documents
平度网:www.pingdu.co 平度论坛:bbs.pingdu.co
发表于 2012-2-15 01:57:57 | 显示全部楼层
这个倒是不没接触过哦!不错
平度网:www.pingdu.co 平度论坛:bbs.pingdu.co
发表于 2012-2-15 01:57:58 | 显示全部楼层
第一次看到,学习了
平度网:www.pingdu.co 平度论坛:bbs.pingdu.co
发表于 2012-2-15 01:58:00 | 显示全部楼层
原来只有在帮助文件里面能看到介绍!楼主厉害
平度网:www.pingdu.co 平度论坛:bbs.pingdu.co
发表于 2012-2-15 01:58:02 | 显示全部楼层
ps太强大了!可惜俺看不懂。。。 redface.gif
平度网:www.pingdu.co 平度论坛:bbs.pingdu.co
 楼主| 发表于 2012-2-15 01:58:03 | 显示全部楼层
不错,开眼了啊!
平度网:www.pingdu.co 平度论坛:bbs.pingdu.co
发表于 2012-2-15 01:58:04 | 显示全部楼层
还不错

已经试过了
平度网:www.pingdu.co 平度论坛:bbs.pingdu.co
发表于 2012-2-15 01:58:06 | 显示全部楼层
谢谢 初步了解
平度网:www.pingdu.co 平度论坛:bbs.pingdu.co
您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

 
QQ在线咨询
售前咨询热线
0532-88371356
售后服务微信
pingduwangzhan
快速回复 返回顶部 返回列表