photoshop CS3 脚本入门
2009年09月14日
这个入门教程实际上只是我阅读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”的书籍或网站都可以作为一个很好的参考。
废话少说,开始第一个脚本吧。
打开一个常用的文本编辑器(记事本即可),键入如下代码: 复制内容到剪贴板
代码:
var originalUnit = preferences.rulerUnits
preferences.rulerUnits = Units.PIXELS
var docRef = app.document.add(200, 200)
var artLayerRef = docRef.artLayers.add()
artLayerRef.kind = LayerKind.TEXT
var textItemRef = artLayerRef.textItem
textItemRef.contents = "Hello world!"
docRef = null
artLayerRef = null
textItemRef = null
app.preferences.rulerUnits = originalUnit然后保存文件,后缀名为.jsx,例如“helloworld.jsx”。
打开Photoshop,文件――脚本――浏览,找到这个脚本文件,然后载入,看看效果吧。可以看到,脚本可以创建新的文档,同时可以创建新的图层,并操作图层的内容。很好很强大是吧。
下面对于上段代码的解释:
photoshop中提供了DOM来作为脚本语言编程的接口,通过这些接口来进行操作。DOM类似与一个属性结构,它的根就是Application,即photoshop,在Photoshop CS3 Scripting Guide中提供了一幅图,很清晰的说明了photoshop中DOM的结构,如下:
我们几乎所有的脚本都是同这些对象打交道。我们通过“helloworld.jsx”这个例子来说明。(添加了注释,最好参照上图查看) 复制内容到剪贴板
代码:
/*
保存当前设置的单位
然后将单位设置为像素
*/
var originalUnit = preferences.rulerUnits;
preferences.rulerUnits = Units.PIXELS;
/*
创建一个新的文档,宽高都为200px
*/
var docRef = app.documents.add(200, 200);
/*
为新文档添加一个新层
设置层的类型为TEXT
*/
var artLayerRef = docRef.artLayers.add();
artLayerRef.kind = LayerKind.TEXT;
/*
设置文本内容为 "Hello world!"
*/
var textItemRef = artLayerRef.textItem;
textItemRef.contents = "Hello, World";
/*
清除对象的引用
*/
docRef = null
artLayerRef = null
textItemRef = null
/*
将预设单位恢复为原来的默认值
*/
app.preferences.rulerUnits = originalUnit;并不是很难,对吧。
脚本的重用
就像刚才所演示的,我们可以将脚本保存到任何地方,然后通过浏览来找到脚本。但是更好的方法是将脚本添加到photoshop的脚本菜单中,即将“helloworld.jsx”复制到 “photoshop安装目录\预置\脚本” 下,重新启动photoshop,就可以在[文件-脚本] 中直接使用这个脚本了。
2009年09月14日
这个入门教程实际上只是我阅读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”的书籍或网站都可以作为一个很好的参考。
废话少说,开始第一个脚本吧。
打开一个常用的文本编辑器(记事本即可),键入如下代码: 复制内容到剪贴板
代码:
var originalUnit = preferences.rulerUnits
preferences.rulerUnits = Units.PIXELS
var docRef = app.document.add(200, 200)
var artLayerRef = docRef.artLayers.add()
artLayerRef.kind = LayerKind.TEXT
var textItemRef = artLayerRef.textItem
textItemRef.contents = "Hello world!"
docRef = null
artLayerRef = null
textItemRef = null
app.preferences.rulerUnits = originalUnit然后保存文件,后缀名为.jsx,例如“helloworld.jsx”。
打开Photoshop,文件――脚本――浏览,找到这个脚本文件,然后载入,看看效果吧。可以看到,脚本可以创建新的文档,同时可以创建新的图层,并操作图层的内容。很好很强大是吧。
下面对于上段代码的解释:
photoshop中提供了DOM来作为脚本语言编程的接口,通过这些接口来进行操作。DOM类似与一个属性结构,它的根就是Application,即photoshop,在Photoshop CS3 Scripting Guide中提供了一幅图,很清晰的说明了photoshop中DOM的结构,如下:
我们几乎所有的脚本都是同这些对象打交道。我们通过“helloworld.jsx”这个例子来说明。(添加了注释,最好参照上图查看) 复制内容到剪贴板
代码:
/*
保存当前设置的单位
然后将单位设置为像素
*/
var originalUnit = preferences.rulerUnits;
preferences.rulerUnits = Units.PIXELS;
/*
创建一个新的文档,宽高都为200px
*/
var docRef = app.documents.add(200, 200);
/*
为新文档添加一个新层
设置层的类型为TEXT
*/
var artLayerRef = docRef.artLayers.add();
artLayerRef.kind = LayerKind.TEXT;
/*
设置文本内容为 "Hello world!"
*/
var textItemRef = artLayerRef.textItem;
textItemRef.contents = "Hello, World";
/*
清除对象的引用
*/
docRef = null
artLayerRef = null
textItemRef = null
/*
将预设单位恢复为原来的默认值
*/
app.preferences.rulerUnits = originalUnit;并不是很难,对吧。
脚本的重用
就像刚才所演示的,我们可以将脚本保存到任何地方,然后通过浏览来找到脚本。但是更好的方法是将脚本添加到photoshop的脚本菜单中,即将“helloworld.jsx”复制到 “photoshop安装目录\预置\脚本” 下,重新启动photoshop,就可以在[文件-脚本] 中直接使用这个脚本了。