[经验分享] photoshop插件开发讨论

一、插件使用的原因和历史Adobe提供了诸多功能强大的图形编辑软件,面对不同的使用场景所需要的特殊需求,主体功能便无法满足了。adobe在不同的阶段提供了不同的插件、扩展方式,导致了目前存在多种插件形态的局面。二、JSX脚本插件,这种脚本插件的方式,更适合一些轻量的功能集合,可以在一个简单面板里头快速完成的动作。这个脚本就是有一个jsx的文件组成的,jsx 是adobe对javascript 的扩展语言,又叫做ExtensionScript 它是对js语言的一种扩展,提供了访问宿主(photoshop)相关功能接口的特性。CornerEditor,这个插件可以帮助你快速的编辑图层的圆角,随便改数值即可。上面这段代码会在当前的ps里头新建一个文档,并且新增一个文字图层CornerEditor和这个类似,它也是一个写了很多js代码的文件,只要将改脚本文件放到PS的Scripts目录下,就可以通过PS的菜单栏 文件-脚本 列表里头看到它,点击该脚本名称,就会弹出上面图片显示的界面窗口。这种脚本,可以实现基本的UI界面(比如上图),这些基本的UI控件都是宿主软件提供的,比如输入框,单选、多选、按钮等。但是只能使用这些基本的控件,无法自己绘制UI。它的优点是简单、小巧,开发速度快,随便打开一个记事本就可以开始写了,安装和使用也比较简单。

下面是一段简单的jsx代码
1 var doc = app.documents.add(300, 200);
2 doc.name = "TestDoc";
3 var layer = doc.artLayers.add();
4 layer.name = "test layer";
5 layer.kind = LayerKind.TEXT;
6 var textItem = layer.textItem;
7 textItem.contents = "Hello photoshop scripting";三、面板插件,以图层面板、颜色面板等样式显示。对于CS6及以前的版本,开发这种面板插件需要用到FLASH的相关技术,编写ActionScript 来开发功能,你需要如下的开发环境。FlashBuilder、ExtensionBuilder2这两个软件。ExtensionBuilder2需要集成在FlashBuilder中使用,集成好之后,就可以开始开发面板插件了。界面通过flashbuilder的默认界面编辑器来完成,功能部分需要自己写ActionScript,adobe提供了对应接口API,可以在EB2的帮助里头找到对应的文档。

.html插件买,在CC的版本中加入了html架构的面板支持,并且在CC2014开始直接废弃了flash的插件架构。html架构更轻量,跨平台兼容性更好,配上chromium的支持,基于html的面板开发,就和传统的web开发很类似,你不需要有很牛逼特定的IDE或者开发环境来进行开发,你只需要一个可以写代码的文本编辑器和一个完整的photoshop就可以了。五、独立软件除了ps自带的面板之外,还有一些独立的第三方软件,他们也可以和photohsop进行交互,对设计稿进行一些处理,需要单独安装,安装成功后,打开PS,他们可以和PS进行通信。这种第三方软件,可以通过photoshop提供的com库进行通信,可以在PS中新建一个文档,你可以用visual studio,建立一个VB或者VC项目,然后通过引用ps的com库这种插件适合对VB比较熟悉的同学,VB本身上手比较容易,借助VS可以快速弄出一个简单的交互界面。新建一个文字图层下面是一个例子:

1 Dim appRef = CreateObject("Photoshop.Application")
2 Dim docRef = appRef.Documents.Add
3 Dim layer = docRef.ArtLayers.Add
4 layer.kind = PsLayerKind.psTextLayer
5 Dim layerItem = layer.TextItem
6 layerItem.Contents = "这是一个VB的外挂插件"
六、基于C++++++的内置插件,如果你有在网上下载过一些PS的滤镜之类的东西,你就涉及到这类的插件,他们经常以xxx.8lixxx.8bx之类的后缀结尾,这类插件你需要手动放到PS安装目录的plug-Ins目录下,然后启动PS之后他们就会自动加载,一个比较典型的这种插件就是PS自带的camera-raw,这种插件的开发依赖adobe发布的sdk,可以在官网下载,sdk里头也提供了许多的sample,可以提供参考。开发完成之后,通过编译生成对应的.8li文件,放到插件目录下,即可运行。这种插件由于用C写的,并且可以通过SDK直接和PS核心进行通信,在处理图像上有天然的计算(速度)优势,所以一般被用来做图像处理相关的功能。另外,它无法实现界面,需要单独的面板来提供支持,也因此,它对开发人员的技术能力要求更高。总结:adobe的插件形式很多,针对PS的扩展方式,你几乎可以用你熟悉的任何语言来开发ps扩展,随着PS的版本不断升级,在扩展的支持上也提供了更多的特性,比如automate,generator,还接入了nodejs,有了这玩意,你几乎能搞所有的事情!所以,你可以选择一种你想要的方式来为PS提供扩展,基于com库的话,你甚至可以用python来和PS进行交互。
1 import win32com.client
2 psApp = win32com.client.Dispatch("Photoshop.Application")
3 psApp.Open(r"D:\temp\blah.psd") # Opens a PSD file
4 doc = psApp.Application.ActiveDocument # Get active document object
5 layer = doc.ArtLayers[0] # Get the bottom-most layer
6 layer.AdjustBrightnessContrast(20,-15) # Bright +20, Contrast -15
7 doc.Save() # Save the modified PSD

看完文章or资源,小编奖励大家支付宝红包一个,可领高达99块,每天都能领一次,支付宝举办的,100%安全。

已有6270人领取了红包,红包使用方法,请戳>>

扫码关注资源坊68bt.cc

本博客所有文章如无特别注明均为转载于网络,版权为原作者所有如侵权请在相应文章下留言谢谢合作。
复制或转载请以超链接形式注明转自 资源坊友情提示:微信扫码可订阅本博客!
原文地址《[经验分享] photoshop插件开发讨论

相关推荐

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(0)