您的位置:首页 > 运维架构

怎样编写一个Photoshop滤镜(1)

2009-05-11 04:03 555 查看
在很久前我曾经写过一篇文章简要讲述了photoshop的滤镜开发的基本概念,并描述了滤镜和PS之间的协作关系,也提供了一个雨滴效果滤镜的Demo。但是缺少源代码。而且我们将要产生疑问,我们如何从头开始编写一个Photoshop滤镜呢?我们如何建立一个最简单的Ps滤镜插件的基本框架,然后在这个基础上继续添加我们想要的功能呢?这里,我就以回答一个网友向我提出的问题为例,从最基本的建立项目开始讲起。这个例子(也是这个网友的问题)是,他想做一个最简单的滤镜,也就是仅仅把图像填充为“红色”。对于PS用户来说,这当然是非常简单容易的事情,只需要一个快捷键操作而已,(滤镜通常是用于完成比较复杂的任务的),我们就从这个最基本的例子出发讲解编写滤镜的过程。在文章最后将附上范例的源码下载链接。

(1)我们使用的开发工具是Visual Studio .NET 2005版本,搭配Photoshop SDK CS(本质上就是一些C++代码和资源等文件组成的发行包)。开发语言使用的是C和C++。

那么使用C#或者其他语言行吗?目前来看可行性不大。所以要开发 Photoshop 滤镜,则要求开发者必须具有较好的C 和 C++ 基础,这是最重要的。当然如果开发者熟悉图像处理,数字信号处理的基本知识将会更好。

(2)准备好工具后,我们打开VS2005,新建项目。项目模板我们选择 Visual C++ 的 Win32。项目名称我们输入我们想要创建的滤镜名称,例如“FillRed”滤镜,表示这个滤镜用于填充红色,如下图:

#endif // APSTUDIO_INVOKED

#endif // 英语(美国)资源

/////////////////////////////////////////////////////////////////////////////

#ifndef APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////

//

// 从 TEXTINCLUDE 3 资源生成。

//

#include "FillRed.pipl"

/////////////////////////////////////////////////////////////////////////////

#endif // 不是 APSTUDIO_INVOKED

(5)我们编译项目,即可在项目的输出目录中看到 生成 FillRed.8bf 文件,下面我们把这个文件复制到 Photoshop的滤镜文件夹下面,例如我的Photoshop CS的滤镜所在目录是:“D:\Program Files\Adobe\Photoshop CS\增效工具\滤镜”



最后我们启动Photoshop,Photoshop会扫描插件目录,并把我们的滤镜加载到相应的菜单上,我们选择一个矩形选区,然后点击我们制作的滤镜相应菜单,即可看到效果,如下图所示。注意,下面的例子的效果是我仅仅把蓝通道填充了255。



在Photoshop 的帮助菜单- 关于增效工具 - 的子菜单中,可以看到我们编写的“FillRed Filter ...”一项,当点击它时PS即发起 about 调用,即可看到弹出的 MessageBox。

(6)最后,还是附上这个小例子的源代码下载链接:

请注意这个项目中有一些设置,比如 PhotoshopSDK的目录等,需要依据具体环境做出相应调整。PS SDK提供的资源转换工具也包含在项目文件夹内。(注意:附件中并未包含完整PS SDK)

http://files.cnblogs.com/hoodlum1980/FillRed.rar

(7)总结:

这一节讲述了从项目创建,到嵌入pipl资源,建立了一个基本的滤镜框架。但它的功能是非常基本和简单的,在以后的时间里,我们可能需要继续丰富这个例子,包括为它引入对话框资源,令PS为我们的滤镜缓存和读取我们的参数,包括在对话框表面绘制滤镜的预览图形等等。

我的相关文章:

《Photoshop第三方滤镜开发的简介》

《Photoshop滤镜开发简介(2)--Photoshop回调函数》

--hoodlum1980 2009.05.11
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐