VC++制作Photoshop自动化插件 photoshop cc 插件

先感叹一番,Photoshop插件功能非常强大,并且SDK使用都超级简单,膜拜一下。官方SDK里提供的例子可以直接在VisualStudio 2010中编译通过。
VC++制作Photoshop自动化插件 photoshop cc 插件
本文使用环境如下:1.开发环境:Visual Studio 20102.SDK:Adobe Photoshop CS5SDK(下载地址:http://www.adobe.com/cn/devnet/photoshop.html)3.测试环境:Win7 + Photoshop CS5
下载SDK后,解压到指定目录,如下图:
在SDK文件夹下找到目录pluginsdksamplecodeautomation下的listener插件目录,里面win目录下有sln文件,使用VS2010打开即可直接编译通过,生成完毕后,找到这个目录:pluginsdksamplecodeOutputWinDebug,会有一个Listener.8li文件,扩展名为8li的文件,即是Photoshop自动化插件文件,将Listener.8li文件复制到Photoshop安装目录下的Plug-insAutomate文件夹内,重启Photoshop,选择菜单“文件”--“自动”在其子项里会出现“Listener”。如下图所示:

这个Listener只是PS众多插件之一而已...但它的功能是非常强大的,我们自己想要实现的插件,都要依靠于这个插件。下面介绍一下这个插件是干什么的:
Listener插件,不需要我们去主动执行它,这个插件可以自动捕获Photoshop中所有“常规”操作(注意:不是所有操作!),并给出对应操作在插件中实现所使用的代码!即便我们不去仔细研究SDK各个函数的用法及流程,依然可以写出功能强大的插件!基于这个插件,我们要想用插件实现自动化操作,只需要在Photoshop中操作一遍,便会自动生成一个Listener.log的文本文件,里面记录插件完成这个功能所使用的代码。
举个例子:我们打开PhotoshopCS5,并打开一个图像文件,操作完成后,打开Listener.log文件,会有类似如下函数:SPErr PlayeventOpen(void){ PIActionDescriptor result = NULL; DescriptorTypeID runtimeKeyID; DescriptorTypeID runtimeTypeID; DescriptorTypeID runtimeObjID; DescriptorTypeID runtimeEnumID; DescriptorTypeID runtimeClassID; DescriptorTypeID runtimePropID; DescriptorTypeID runtimeUnitID; SPErrerror = kSPNoError; //Move this to the top of the routine! PIActionDescriptor desc00000078 = NULL;
error= sPSActionDescriptor->Make(&desc00000078); if(error) goto returnError;
//Move this to the top of the routine! HandlealiasValue = NULL; FullPathToAlias("C:UsersAdministratorDesktoptestinput人像副本.png",aliasValue); error= sPSActionDescriptor->PutAlias(desc00000078, keyNull,aliasValue); if(error) goto returnError;
error= sPSActionControl->Play(&result, eventOpen, desc00000078,plugInDialogSilent); if(error) goto returnError;
returnError: if(result != NULL) sPSActionDescriptor->Free(result); if(desc00000078 != NULL)sPSActionDescriptor->Free(desc00000078); if(aliasValue != NULL) sPSHandle->Dispose(aliasValue); returnerror;}
这个示例函数,我们并不需要完全读懂每一个函数调用的含义(当然能读懂更好^_^)!我们发现FullPathToAlias("C:UsersAdministratorDesktoptestinput人像副本.png",aliasValue);这个函数的第一个函数是要打开的文件的路径,这个参数我们可以根据插件需要,动态来传递这个参数!
下面介绍另外一个插件:目录pluginsdksamplecodeautomation下的Getter插件目录里面的win文件夹下有sln文件,可以用vs2010打开,我们所写的插件,可以基于这个工程来修改,这个插件原来也有自己的功能的,它也实现了一些操作的监视,不过我们暂时可以不用理它,就拿它来改造成我们的插件即可!
在Getter.cpp文件中找到DLLExport SPAPI SPErr AutoPluginMain(const char* caller, constchar* selector, void* message)这个函数,这个是插件的入口函数,Photoshop调用插件的时候,最先调用插件内部的这个函数。其实所谓的photoshop8li插件文件,不过是dll而已!
在入口点函数AutoPluginMain内,调用了函数DoIt(actionsMessage);我们把它注释掉,换成调用我们自己的函数,便把这个插件改造成我们自己需要的了!
下面我们完成一个具体的例子,要实现的功能是,调用插件,打开一个指定的文件。1.将Listener.log文件中的PlayeventOpen函数,完整copy到Getter工程中Getter.cpp文件里(最好放在入口点函数之前,否则要加前置声明!)2.将原来的DoIt(actionsMessage);注释掉,并改为PlayeventOpen();3.重新编译。4.到SDK目录下pluginsdksamplecodeOutputWinDebug里找到生成的Getter.8li,拷贝到Photoshop安装目录下的Plug-insAutomate文件夹内,重启PS(一定要重启!)5.“文件”--“自动”--“Getter”,我们发现已经自动打开了那个图片。恭喜,一个最简单的PS插件,你已经做出来了!

最后注意一些开发技巧:1.我们要想获取一个操作对应的实现函数时,先打开PS,操作到要获取操作对应函数之前,回到桌面,把原来的log文件删掉,回到PS,执行目标操作,执行完目标操作后不要进行其他的操作,打开log文件,这时里面几乎只有一个函数,就是刚刚我们执行目标操作所需要的函数。否则的话,log文件里有好多函数,不容易找到哪个函数是我们刚刚执行的操作了!因为有时一个操作可能对应多个函数!2.PS菜单中显示的插件名称,并不是根据文件名来命名的,所以我们可以随便更改生成出来的Getter.8li这个文件的文件名,而不影响插件的真实名字。如果我们想修改PS中显示的插件名称,请在VS解决方案管理器中找到GetterPiPL.r文件,打开找到#define plugInName "Getter"替换成#define plugInName "MyPluginName"重新生成,插件在PS中的显示名就变成了“MyPluginName”了...

以上内容,本文作者仅对PS插件入门做讨论,如有错误之处,希望高手留言指正,以免误导其他开发人员。谢谢!作者QQ:7278449,欢迎各位加我交流技术。


  

爱华网本文地址 » http://www.413yy.cn/a/25101010/19683.html

更多阅读

用photoshop制作公章 精 用photoshop制作公章

用photoshop制作公章 精——简介用photoshop软件制作简易公章,先看效果渐变图。用photoshop制作公章 精——工具/原料电脑photoshop软件用photoshop制作公章 精——方法/步骤

用PhotoShop和ImageReady制作Gif动画图解 精 photoshop imageready

相信大多数人都看到过各大网站首页都有不断切换的动画图片宣传效果很不错,但是苦于自己不是电脑专业,不能设计。在这里,我就教大家怎么制作简单的两帧Gif动画。(特别适合网站编辑人员吆) 首先,要选定想要切换播放的背景图片两张。用Pho

(亲测 怎么完美破解Adobe photoshop cc adobephotoshop64破解

(亲测)怎么完美破解Adobe photoshop cc——简介Adobe photoshop cc 一个功能强大的图形处理软件,摄影爱好者与相关专业学生必备。不过价格太高 学生伤不起啊,下面,请看完美激活 可在线更新的哦(亲测)怎么完美破解Adobe photoshop cc——

一寸照片的尺寸是多少及制作方法 photoshop一寸照片制作

一寸照片的尺寸是多少及制作方法——简介有时我们需要制作一寸的证件照,一寸照片的尺寸2.5*3.5cm 像素413*295,今天小编就和大家用photoshop来自作一寸照片。一寸照片的尺寸是多少及制作方法——一寸照片的尺寸制作方法一寸照片的尺

声明:《VC++制作Photoshop自动化插件 photoshop cc 插件》为网友阳光气质男分享!如侵犯到您的合法权益请联系我们删除