作者:wide288@LinuxSir.org 最后修改:2009-9-2

Copyright @ 2008 2009 wide288
返回主页

脚本


GIMP 中的 Script-Fu 叫做"宏"。但是它比宏的功能更加强大。所以我叫它脚本。Script-Fu 基于一种名叫“Scheme”的解释性语言并以向 GIMP 数据库使用查询函数的方式来进行工作。
我们可以用 Script-Fu 来做任何事。这里需要你的想象力。
这里不介绍很复杂的功能,因为那样和本书的步调不一至。本书的目标就是从简单开始一点点学会如果更好的使用 GIMP 来创建或处理数字图像。当然这并不是说就不讲解脚本的编程知识。如果工作需要那是可以讲的。另外由于作者水平问题,GIMP 的功能并不能全部讲解。如脚本,GIMP 并不只支持 Script-Fu, GIMP 还支持 Perl 和 Tcl。有的朋友会这两种脚本,所以学习在 GIMP 中使用它们可能会更好。但是这里我就不能帮助你们了。因为我不会用。

好了,我们开始学习吧。
Script-Fu 每一项说明都由括号括住。
函数的名字或操作符总是括号里的第一项,其它项是函数的参数。
数学操作符(如加号)也被认为是函数。如:(+ 1 3) ,表示的意思是:1 + 3
  这叫做前缀表示法。

变量
let* 结构,分别给变量 a 和 b,初始化值 1 和 2。
(let*  (
          (a 1)
          (b 2)
        )
        (+ a b)
)


也可以写成一行的样子,如:
(let* ( (a 1) (b 2) ) (+ a b) )
上面的变量定义是局部变量。
如果使用的是控制台窗口,就必须把它们放到一行里。

let* 的语法:
(let* (变量) 表达式)

set! 改变变量的值
set! 变量值

函数
(define (函数名 变量名称) 表达式)

例如:(define (AddXY inX inY) (+ inX inY) )
变量没有类型
函数的最后一个语句就是返回值

列表
(let* ( (x '(1 3 5)) ) x )
输出:(1 3 5)

定义列表的语法:
'(a b c)
a b c 是常数
(let* 
 ( 
  (x 
    '("The Gimp" (1 2 3) ("is" "great" ()) )
  ) 
 ) x 
)
输出是:
("The Gimp" (1 2 3) ("is" "great" ()))

cons 添加一个元素作为列表的头。
> (cons 1 '(2 3 4))
(1 2 3 4)

list 定义一个由常量或变量组成的列表。
> (list 5 4 3 2 1)
(5 4 3 2 1)

car 返回列表的第一个元素(列表的头),列表要求非空。
例如:
> (car '("first" 2 "third"))
"first"

cdr 返回列表的第一个元素之后的剩余部分(列表的尾),如列表中只有一个元素,返回的就是一个空列表。
例如:
> (cdr '("first" 2 "third"))
(2 "third")

> (cdr '("first"))
()

caadr 可以访问列表尾部的头部。

cddr 访问列表尾部的尾部。


自已写的脚本文件存在那里?
Linux 系统, 存在 Home/.gimp/script 下。
Windows XP 系统, 存在 C:\Documents and Settings\Administrator\.gimp-2.6\scripts 下

每一个脚本至少要定义一个函数,这个函数就是脚本的主函数。
(define (script-fu-text-box inText inFont inFontSize inTextColor))

注册函数
(script-fu-register
	"script-fu-text-box"	;函数名
	"<Image>/File/New/FX-Foundry/Render"						;菜单路径
	"创建一个简单的文本框。"
	"wide288"	;作者
	"版权 2009 wide288"		;版权注释
	"2009-09-02"			;创建日期
	""							;脚本工作的图像类型
	SF-VALUE	"Text:"			"\"Text Box\""		;文本值
	SF-VALUE	"Font:"			"\"Charter\""		;文本值
	SF-VALUE	"Font size:"		"45"			;文本值
	SF-COLOR	"Color:"			'(0 0 0)			;颜色值
)
脚本文件的扩展名为 scm 。
菜单路径是:图像窗口->文件->创建->FX-Foundry->Render->Planet render




返回主页