René Nyffenegger's collection of things on the web
René Nyffenegger on Oracle - Most wanted - Feedback -
 

Script-fu example 11: Drawing on an existing image

The following function takes an already created image as parameter and draws a rectangle on it.
rectangle.scm
(define (rectangle img size x y)

  (let* (
          (lyr (car (gimp-layer-new img size size RGB-IMAGE "my layer" 100 NORMAL)))
        )


       (gimp-image-add-layer img lyr -1)
       (gimp-layer-set-offsets lyr x y)

       (gimp-context-set-background '(255 000 000))
       (gimp-context-set-foreground '(000 000 255))

       (gimp-drawable-fill lyr BACKGROUND-FILL)

  )
)
ex_11 then creates an image and passes it to rectangle.
ex_11.scm
(define (ex_11) 
  (let* (
           (my-image (car (gimp-image-new 250 250 RGB      )) )
           (my-layer (car (gimp-layer-new my-image 250 250 RGB-IMAGE "final layer" 100 NORMAL)))
        )
        
        (gimp-image-add-layer my-image my-layer 0)

        (gimp-context-set-background '(100 100 100))
        (gimp-context-set-foreground '(000 255 000))
        (gimp-drawable-fill my-layer BACKGROUND-FILL)

        (rectangle my-image 10  10  10)
        (rectangle my-image 20  20  20)
        (rectangle my-image 30  40  40)
        (rectangle my-image 40  70  70)
        (rectangle my-image 50 110 110)
        (rectangle my-image 60 160 160)

        (set! my-layer (car (gimp-image-flatten my-image)))

;       (gimp-display-new my-image)

        (gimp-file-save RUN-NONINTERACTIVE my-image my-layer "c:\\temp\\ex_11.jpg" "")

  )
)
c:\> start gimp-2.2.exe -d -i -b  "(ex_11)" "(gimp-quit 0)"
See also other examples