5c55.com平面爱好者  
首页 | 软件教程 | LOGO设计 | 楼书设计/楼盘广告 | 包装设计 | 广告赏析 | VI设计 | 印前技术 | 海报设计 | 工业设计 | 版面设计 | 产品创艺设计 | 软件界面设计 | 专题
  当前位置:主页>软件教程>Photoshop教程>文章内容
Photoshop 的插件及其实现
来源: 作者: 发布时间:2007-08-23  

一、plug-in概述

1. plug-in结构
plug-in结构由两部分组成,一是插件(plug-in modules),二是宿主(plug-in hosts)。插件是Adobe或第三方开发者开发的、用以扩展标准Photoshop功能的软件模块,用户可以不需改动宿主的代码,而通过在系统中增加或升级插件以满足自己的需要。宿主则负责把插件载入内存并通过一定接口进行调用、协作,当插件功能完毕之后,将插件从内存中卸载。Adobe公司的其他产品,如Premiere、Illustrator、PageMaker等都是宿主,但是它们的plug-in结构各有不同,本文只讨论Photoshop宿主。
plug-in并非Photoshop所独有,许多应用程序都支持特定的插件,Silicon Beach便是一家最早支持plug-in技术的公司,它将插件设计为独立的文件,允许这些文件放置在任意的位置,并且它引入了版本号概念,当新功能增添到接口中时能实现平稳升级。Photoshop有些近似于这一方式,它利用了相似的调用过程和版本号策略,但随着Photoshop针对真彩色图像处理和虚拟内存管理的需要所做的工作,其插入结构不断被完善和发展,现在的具体接口已经和Silicon Beach的完全不同了。

2.插件类型
Photoshop支持以下四种插件:
Acquire modules(扩展名8ba)实现在一个新窗口中打开一幅图像,常用于扫描仪或视频捕捉卡接口,读取压缩格式或系统不支持的文件,通过Acquire子菜单调用。

www.5c55.com


Export modules(扩展名.8be)实现图像输出,常用于控制特殊打印机或以非标准压缩格式进行文件输出,通过Export子菜单调用。
Format modules(扩展名.8bi)实现标准读写系统不支持的特殊文件格式,出现在Open...、Save As...等对话框的格式栏中。
Filter modules(扩展名.8bf)实施对当前图像中的选定区域进行修改、润色。这是大家最熟悉的部分,许多图像效果便是出自这些模块,通过Filter菜单调用。
在Windows中,插件文件必须放置在特定的路径中(如\photoshop\plugins),这些路径由photos 30.ini中的PLUGIN DIRECTORY栏所指示。一个插件文件可包含一个或多个功能,但并不提倡创建多功能的插件文件,因为这样减少了插件的用户控制。然而,当一组功能紧密相关时,创建多功能的插件可以便于文件管理,弥补了前述不足,所以用户可按照具体情况编制插件。

3.插件的程序接口
宿主程序对插件的调用是对用户操作的响应。一般来说,执行一个用户命令会导致一系列宿主对插件的调用,所有这些调用都是通过插件的入口函数ENTRYPOINT()完成的。其结构如下:
void ENTRYPOINT(
short selector,
void * plugin ParamBlock,
long * pluginData,
short *result);
5c55.com美术设计师的家园

其中,selector参数指示宿主程序所要求的操作类型,selector=0时表示要显示一个About信息框。按照SDK的规定,此对话框必须放置在主窗口中央、不含OK按钮,但能够对回车键或在其中进行的鼠标点击作出响应。其他selector值在各种插件中有不同的定义。pluginParamBlock参数指向一个用于在宿主和插件之间来回传递信息的数据结构,这个结构随着插件类型的不同而改变。pluginData参数指向一个长整型,它是Photoshop为插件保留的固定区域,其典型的应用便是存储一个长句柄,指向一个插件的全局数据所占用的内存区,当插件第一次被调用时值为0。result参数指向一个短整型,每次当插件被调用时,它都必须设置result。当返回一个0值给宿主时,表示插件代码中没有错误出现;而当result为非0值时,则向宿主表明插件中发生了某些错误,或表明在插件的执行过程中用户取消了操作。
一个插件的主结构实际上是一个多向开关,它把pluginParamBlock、PluginData和result参数发送给各个selector所对应的句柄。下面是一个Filter module的入口代码:
void ENTRYPOINT(
  short selector,
  FilterRecord*filterParamBlock,
  long*data,short*result)
{
Globals globalValues; 标志设计 VI设计 AI线稿下载劲尽在 5 c 5 5 . c o m
GPtr globals=&globalValues;
gResult=noErr;
...
switch(selector){
  case filterSelector about:
    DoAbout(globals);break;
  case filterSelectorParameters;
    DoParameters(globals);break;
  case filterSelectorPrepare:
    DoPrepare(globals);break;
  case filterSelectorStart:
    DoStart(globals);break;
  case filterSelectorContinue:
    DoContinue(globals);break;
  case filterSelectorFinish:
    DoFinish(globals);break;
  default:
    gResult=filterBadParameters;
}
*result=gResult;
...
}

Tags:插件
(阅读次数:
共2页: 上一页 1 [2] 下一页
上一篇:PS中通道混和器   下一篇:给photoshop初学者的一点忠告[建议]
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·photoshop 抠图技巧:如何从复杂
·photoshop 7.0教程(完整版) 平
·用Photoshop6.0制作名片 平面爱
·轻松做画家!用Photoshop把照片处
·用Photoshop处理室内效果图 平
·photoshop打造我自己的法拉利
·Photoshop照片处理:如何打造朦
·photoshop 抠图技巧:漫画女孩头
·Photoshop蒙板:如何给灰暗的照
·Photoshop制作铜牌效果
·Photoshop 7.0图层混合模式探索
·保留皮肤毛孔的磨皮方法
  相关文章
·PS中通道混和器
·给photoshop初学者的一点忠告[建
·Ps中的一些基本概念(初学者必看)
·PS中绘制虚线的几种方法介绍
·Photoshop6的色彩管理基本之道
·PS滤镜的应用
·photoshop滤镜[素描]和[艺术效果
·外挂滤镜的安装
·PS动作入门
·滤镜的由来与文件格式
·Photoshop 小技巧集锦八十条
·导航器和动作的技巧
Copyright © 2005-2007 5c55.com Incorporated. All rights reserved. 沪ICP备07024588号