gimp script-fu:绘制一条简单的线条

时间:2018-03-01 18:36:09

标签: scheme drawing gimp script-fu

我正在尝试使用gimp脚本绘制一条线。在下面的脚本中:我创建一个新图像512x512,我尝试绘制对角线(0,0) - >(512,512)。 但是图像(tmp.xcf)仍然是透明的。

我做错了什么?

(define (drawdiagonal W H)
(let* (
      (img 0)
       (bg 0)
       (points (cons-array 4 'double) )
      )
(set! img (car (gimp-image-new  W H 0)))
(gimp-image-undo-group-start img)
(gimp-context-push)
(set! bg (car (gimp-layer-new img  W H RGBA-IMAGE "background" 100 NORMAL-MODE)))
(gimp-image-add-layer img bg 0)
(gimp-drawable-set-visible bg TRUE)
(gimp-image-set-active-layer img bg)
(gimp-context-set-brush-size 10.0)
(gimp-context-set-opacity 100)
(gimp-context-set-paint-mode NORMAL-MODE)
(gimp-context-set-foreground '(255 127 0))
(gimp-selection-all img)

(aset points 0 0)
(aset points 1 0)
(aset points 2 W)
(aset points 3 H)
(gimp-paintbrush-default  bg 4 points)

(gimp-context-pop)
(gimp-image-undo-group-end img)

(gimp-xcf-save 1 img img "tmp.xcf"  "tmp.xcf")
(display "DONE")
)
)

(drawdiagonal 512 512) (gimp-quit 0)

用法:

cat test.scm | gimp -i  -b -

1 个答案:

答案 0 :(得分:3)

似乎你大部分都缺席了:

(gimp-context-set-brush "Some brush")

此外,第三个参数(第二个img)应该是一个可绘制的:

(gimp-xcf-save 1 img img "tmp.xcf"  "tmp.xcf")

PS:帮个忙,用Python编写脚本。有关示例,请参阅here

编辑post-Gimp 2.10:现在有一个用于在“Line”模式下描边路径的API,这是获得干净结果的最佳方式。相关电话是:

pdb.gimp_context_set_stroke_method(STROKE_LINE)
pdb.gimp_context_set_line_cap_style(...)
pdb.gimp_context_set_line_join_style(...)
pdb.gimp_context_set_line_miter_limit(...)
pdb.gimp_context_set_line_width(width)
pdb.gimp_drawable_edit_stroke_item(drawable, path)