- 第一種方式:只修改註冊於PDB內的函數名稱
- 第二種方式:修改成在 Console 內可一行一行執行的 Scheme 程式碼
- 第三種方式:修改成在 Console 內可一行一行執行的 Python 程式碼
- 本節介紹「第二種方式」。
- alien-glow-logo.scm 完整的程式碼可參考 23.5 節。
- 也可到 GIMP 系統的 scripts 目錄下找到該檔案。
- 最主要修改的部份是,將「對話框接收輸入變數值」修改成「直接指定輸入變數值」。
- 先要瞭解,alien-glow-logo.scm 程式碼的執行流程。
- 修改成最多的地方就是下列這兩大段。
- 修改後的程式碼,不再需要預先定義函數 script-fu-newsprint-text ,但是要預先設定變數名稱、變數值 。
size
font
glow-color)
(let* (
(img ......)
(border .....)
(grow .....)
(feather .....)
(text-layer .....)
(width .....)
(height .....)
)
logo-layer
size
glow-color)
(let* (
(border ......)
(grow ......)
(feather ......)
(width ......)
(height ......)
(bg-layer ......)
)
- 從下列的程式碼得知變數值的型態與大小 。
SF-ADJUSTMENT _"Font size (pixels)" '(150 2 1000 1 10 0 1)
SF-FONT _"Font" "Sans Bold"
SF-COLOR _"Glow color" '(63 252 0)
- 下面是修改後的程式碼。
- 啟動 GIMP Script-fu Console
- 將下面的 Scheme 程式碼,全部選取、複製、再貼入 Script-fu Console 文字框,按下 Enter 。
- 過一會,就會看到結果圖。
(define text "ALIEN") (define size 150) (define font "Sans Bold") (define glow-color '(63 252 0)) (define img (car (gimp-image-new 256 256 RGB))) ;(gimp-display-new img) ;也可在此處就顯示出 img 物件 ;也就是新增影像視窗並顯示出目前的圖案 (define border (/ size 4)) (define grow (/ size 30)) (define feather (/ size 4)) (define text-layer (car (gimp-text-fontname img -1 0 0 text border TRUE size PIXELS font))) (define width (car (gimp-drawable-width text-layer))) (define height (car (gimp-drawable-height text-layer))) (define logo-layer text-layer) ;(define border (/ size 4)) ;這 5 行重複前面的變數定義 ;(define grow (/ size 30)) ; 因此將這 5 行起來起來註解起來 ;(define feather (/ size 4)) ;(define width (car (gimp-drawable-width logo-layer))) ;(define height (car (gimp-drawable-height logo-layer))) (define bg-layer (car (gimp-layer-new img width height RGB-IMAGE "Background" 100 NORMAL-MODE))) (define glow-layer (car (gimp-layer-new img width height RGBA-IMAGE "Alien Glow" 100 NORMAL-MODE))) (gimp-image-undo-disable img) ; 關閉復原的功能 ; ; ;接下來一大串程式碼相當於 ;(apply-alien-glow-logo-effect ...) ; (gimp-context-push) (gimp-selection-none img) (script-fu-util-image-resize-from-layer img logo-layer) (script-fu-util-image-add-layers img glow-layer bg-layer) (gimp-layer-set-lock-alpha logo-layer TRUE) (gimp-context-set-background '(0 0 0)) (gimp-edit-fill bg-layer BACKGROUND-FILL) (gimp-edit-clear glow-layer) (gimp-selection-layer-alpha logo-layer) (gimp-selection-grow img grow) (gimp-selection-feather img feather) (gimp-context-set-foreground glow-color) (gimp-edit-fill glow-layer FOREGROUND-FILL) (gimp-selection-none img) (gimp-context-set-background '(0 0 0)) (gimp-context-set-foreground '(79 79 79)) (gimp-edit-blend logo-layer FG-BG-RGB-MODE NORMAL-MODE GRADIENT-SHAPEBURST-ANGULAR 100 0 REPEAT-NONE FALSE FALSE 0 0 TRUE 0 0 1 1) (gimp-context-pop) ; ;以上相當於(apply-alien-glow-logo-effect ...) ; ; (gimp-image-undo-enable img) ; 重新啟動復原的功能 (gimp-display-new img);這一行也可以移到 img 物件生成時就執行