第 10 章  Scripting

目录

1. 插件
1.1. 简介
1.2. 使用插件
1.3. 安装新插件
1.4. 写插件
2. 使用 Script-Fu 脚本
2.1. Script-Fu?
2.2. 安装脚本
2.3. 注意事项
2.4. Script-Fu 的不同类型
2.5. 独立脚本
2.6. 依赖图像的脚本

1.  插件

1.1.  简介

GIMP 中一件最棒的事就是扩展其功能非常容易,通过插件。 GIMP 插件是一些被主 GIMP 程序控制并与它紧密交互的外部程序。插件能以用户所能做到的几乎是任何方式来处理图像。它们的优势在于通过编写小插件增加功能比修改构成 GIMP 核心冗长而复杂的代码更为容易。许多非常有用的插件也就仅仅只有 100-200 行的 C 代码。

很多插件已经包含在 GIMP 版本,并随着 GIMP 自动安装了。通过 滤镜 菜单(实际上那个菜单中都是插件)能够使用大部分插件,另一部分则在其它菜单中。许多情况下,您会用到插件,并且您还没有意识到它是:比如,“标准化”能够自动更正色彩的功能实际上就是一个插件,虽然它运行的方式并没有告诉您。

除了 GIMP 附带的插件外,网上还有更多。您能在 GIMP 插件注册处 [GIMP-REGISTRY] 找到大量插件,该网站的目的就是为插件提供一个中央储藏的地方。插件制作者可以上传到这里;寻找完成某些目的插件的用户能用多种方式在这个网站搜索。

任何人都能写 GIMP 插件,然后通过注册处或个人网站在网络上发布,一些非常有价值的插件可以就通过这样获得---在用户手册中有一些描述。这种相对的自由有时会产生一定的风险。事实上,任何人都可以这样做意味这缺少有效的质量控制。GIMP 发行版本所附带的插件都是经过开发人员测试和调整过,但是许多您能下载的是几小时前才被整理出来,还不稳定。一些插件制作人员并不在乎代码的健壮性。即使都那些注意了的人,他们在各种系统中不同情况下的测试能力还非常有限。一般来说,当您下载一个插件时,您得到了些实惠,但有时您也要付出代价。这并不是说要打击您,只是让您认识到这是事实。

[警告] 警告

插件,作为完整的可执行程序,能做其它任何程序所能做的,包括在您的系统上安装后门或其它为害安全的事。不要轻易安装插件除非它的来源是可信任的。

在插件注册处也有和其它插件代码一样的危险。注册处允许任何想使用的插件制作者使用:这里并没有系统地监控。显而易见,如果当维护人员意识到那里有危险,他会将它们删除。(到目前还没发生过。)尽管如此,对 GIMP和其插件 就像其它自由软件一样:没有担保。

[小心] 小心

插件做为 GIMP 的特性已经存在多个版本中。尽管如此,为一个版本所写的插件很能在另一个版本中成功使用。它们需要被移植:有时是很容易,有时不是。许多插件已经在多个版本中都存在。最后记住:在您开始安装插件前,确认这是为您的 GIMP版本所写的。

1.2.  使用插件

大多数情况下,像使用其它 GIMP 工具一样使用插件,并不需要意识到这是个插件。但是这里有些东西了解下对您是有帮助的。

一个就是插件一般来健壮性不如 GIMP 核心。当 GIMP 崩溃时,这是一件非常灾难性的事:它可能给用户带来许多麻烦和痛苦。而当插件死掉时,后果就常常并不是那么不堪设想。大多数情况下您能继续您的工作而没有必要担心。

[注意] 注意

因为插件是些独立的程序,它们和 GIMP 核心通过特殊的方式通信: GIMP 开发者称其为 “taking over a wire” 。当插件崩溃时,通信就被中断,您会看到出现 “wire read error” 的错误消息。

[提示] 提示

当插件崩溃时,GIMP 显示一条看上去可怕的消息高诉您插件在崩溃的边缘,考虑是保存图像还是退出。严格来说,这非常正确,因为插件几乎有能力改变 GIMP中任何东西,但是实际上,经验表明这种崩溃却是很少发生,很多用户继续工作而并不担心。我们的建议是,考虑如果出错会给您带来多少麻烦,然后自己衡量后再决定。

因为插件和 GIMP 通信的这种方式,它们没有任何在插件启动后通报对图像所做的改变的机制。当您开始使用一个插件而同时用其它工具来改变图像时,插件常常就会崩溃,即使没有,也常常给您一个错误的结果。您应该避免同时对图像运行一个以上的插件,并且不要对图像做任何操作直到插件处理完毕。要是您忽略这些建议,不光您处理的图像要遭殃,重做系统也可能受到破坏,到那时您就无法从您的所干的蠢事中恢复了。

1.3.  安装新插件

GIMP 发行版本所附带的插件不需要任何特别的安装。而那些您自己下载的则需要。这有一些方法,它们依赖与您使用何种操作系统以及插件的结构。在 Linux 下,安装新插件常常是相当简单的;在 Windows 下,要么简单要么非常难。不管怎么说,最好把它们单独分开讨论。

1.3.1.  Linux

大部分插件可划分为两类:源代码由单个的 .c 文件构成的比较小的一类和源代码由多个文件和一个 Makefile 包含在一个目录中的比较大的一类。

对单个文件的插件,比如叫 borker.c,通过命令 gimptool-2.0 --install borker.c 来安装它。该命令编译插件然后安装到您的个人插件目录中,~/gimp-2.2/plugins 除非您已经改变。这将使下次启动 GIMP 时自动载入。您不需要 root 权限来干这些事;实际上,您也不应当这样。当然如果插件编译失败,那就是另外一回事了。

可是一旦您安装完毕,如何运行它们呢?其在菜单的路径由插件本身决定。所以要回答这个问题,您可以通过看插件的文档(如果有的话),或打开插件描述对话框(扩展/插件浏览器)搜索其插件名并使用树状列表。如果仍然没有找到,就只能浏览各个菜单或看该插件源代码的注册部分---这或许是最简单的。

对于包装成一个目录的复杂些的插件,一般其中都有 INSTALLREADME 这两个文件,其中有安装指令。如果没有,最好将这些插件放入回收站而把时间花在另外的上面:这种毫不关心用户的代码将使人感到非常沮丧。

一些插件(特别是那些基于 GIMP 插件模板的)被设计为安装到 GIMP 主系统目录中,而不是您个用户目录下。这时,您需要变为 root 来完成安装的最后一步(make install)。

如果安装在个人插件目录中插件和在系统插件目录中的有相同的名字,就只有一个被载入,那就是在您用户目录中的。当您每次启动GIMP时,您都会收到消息告知您这些。因此可能最好要避免这种情况发生。

1.3.2. Windows

Windows 是一个在编软件方面比 Linux 更难捉摸的环境。现在每个 Linux 发行版本提供完整的编译软件工具,而且它们运作的方式也差不多。但是 Windows 并步附带这些工具。虽然有可能在 Windows 中建立一个很好编软件的环境,但是需要要么有足够的金钱,要么有大量的知识并耗费相当的精力。

在关于 GIMP 插件中,意味着:要么您有编软件的环境,要么没有。如果没有,最好希望能找到在某处找到一个已经编译好的版本(或说服某人帮您编译),然后您只需要简单地把其放到您的个人插件目录下。如果您确实有编软件地环境(这里是指您能编译 GIMP),也就是说您毫无疑问已经知道不少这方面的东西了,所以只需要跟着 Linux 的指令做。

如果您想建立一个编软件环境,并准备无所畏惧地投入其中,您可以在 GIMP Wiki 中找到一个适当的当前关于如何开始的介绍 HowToCompileGimp/MicrosoftWindows [GIMP-WIKI01] 。由于这是个 Wiki,任何人都可以编辑它,所以请添加基于您自己经验的建议,以便让它保持最新。

1.3.3.  Apple Mac OS X

我们可以使用这儿的一些材料。

1.4.  写插件

如果您想知道如何写插件,您能在 GIMP 开发者网站上找到些有用的帮助 [GIMP-DEV-PLUGIN]. GIMP 是一个复杂的程序,但是开发者团队作出了艰辛的工作使写插件的学习曲线变得平坦:许多好的步骤指令和范例 GIMP 的主库作为其插件接口(叫 “libgimp” )有一个拥有好的完整文档的 API 。好的程序员,通过学习已有的插件,常常只需几天的工作就能完成一些很有趣的东西。