gimp的脚本一些心得记录

为了可以自定义的裁剪tile图片,我这两天一直在学习怎么使用gimp的script-fu。走了不少弯路,昨天终于成功了第一个脚本,对其也算有了初步认识吧。在此做个记录,以便日后来查。

gimp支持python-fu和scirpt-fu两种脚本方法,python-fu顾名思义就是用python来写;script-fu,这是一个lisp的方言scheme。这两天用的就是scheme,所以就讲它了。

脚本的注册

在gimp的scripts目录下新建.scm后缀的文本文件。 要注意的是不同gimp版本,可能scripts目录的位置会不一样。以我电脑为例,gimp2.8是在~/.gimp-2.8/scirpts/,而gimp2.10则是在~/.config/GIMP/2.10/scripts/这个目录下。 然后,代码格式如下:

(define 
   (scirpt-test    ;函数名
   ;接下来都是变量名,要和scirpt-fu-regiser里面的变量一样(命名和顺序),变量才会正常传递
   image
   drawable
   )
)
(scirpt-fu-register
    "scirpt-test"    ;函数名,scirpt-fu官方建议都以"-"连接单词这种风格命名函数
    "菜单abc"         ;菜单标签,这是会显示在菜单上的标签
    "脚本描述"         ;描述这个脚本的功能作用之类的,可以在方法浏览器查看。
    "作者"
    "copyright 2020巴拉巴拉"   ;版权信息,也是描述性文字。
    "2020/4/1"       ;日期
    ""               ;这个我还没搞没明白它的功用,但不能少。
;接下来是些变量和默认值了,这些参数名要和函数定义里面的变量名一样,顺序也不能乱
;   参数类型      参数名     默认值
    SF-IMAGE    "image"    0     ;如果用了这个参数,这个必须是第一个参数。传递图片给脚本,默认是当前并正在工作的图片
    SF-DRAWABLE "drawable" 0     ;如果有用SF-IMAGE,这个也必须启用,并且必须放是第二个参数。
    SF-VALUE     "a"        "0"   ;值,可以是int或string,但默认值要求必须是string.传递的若是数字,如"123",会自动识别成相应的数字类型,如"int"
    SF-STRING    "b"        "sadf" ;字符串参数

;还有其他类型变量,可以自行查阅官方文档
)
;下在是在菜单中注册,注册成功可在菜单上找到这个脚本。
(script-fu-menu-register "script-test" "<Image>/File/test")


;"<Image>/File/test"是菜单路径,表示这个最终会注册到"文件"-"test"这个菜单下。
;<Image>这是必须的不可更改的,可以理解为根菜单,后面的/File/test可以是已存在的菜单,或不存在的菜单.不存在的菜单会自动创建路径。
;有些单词因为汉化原因会自动转成中文,如“file”会自动变为“文件”,但你也可以直接输入中文路径如,"<Image>/脚本/测试",则会在"脚本"-"测试"菜单中,查看到"菜单abc"

一些易忽略的点

  • gimp内部方法,返回的都是list,即使值只有一个。所以,使用时,可能要用car之类的方法去抽取元素。