- 本節介紹單步執行的「第三種方式」,修改成在 Console 內可一行一行執行的 Python 程式碼 。
- 接續前節,使用前節更改後的 Scheme 程式碼,將它改成 Python 程式碼 。
修改「變數值指派」的程式碼
- 有些地方,可以直接手動更改。有些地方,手動更改,太累人了。
- 文字編輯器,都有「搜尋」與「取代」的功能,善用「搜尋」與「取代」,可幫助修改程式碼。
(define width 256 )
(define height 256 )
(define seed 32 )
(define detail 4 )
(define landheight 60 )
(define seadepth 4 )
(define xscale 4 )
(define yscale 4 )
(define gradient "Land 1")
- 可分段使用「搜尋」與「取代」的功能。
- 例如,上一段程式碼是用於「變數值指派」。
- (define ...) 開頭的 (define 是要刪除的
- (define ...) 結尾的 ) 是要刪除的
- 將「空白」取代為 等號 =
- 「取代」之後的程式碼,如下所示。
width = 256
height = 256
seed = 32
detail = 4
landheight = 60
seadepth = 4
xscale = 4
yscale = 4
gradient = "Land 1"
修改「指派影像物件、圖層物件」的程式碼
(define img (car (gimp-image-new width height RGB)))
(define layer-one (car (gimp-layer-new img width height RGB-IMAGE "Bottom" 100 NORMAL-MODE)))
(define layer-two 0)
- 上一段程式碼是用於「指派影像物件、圖層物件」。
- (define ...) 開頭的 (define 是要刪除的
- (define ...) 結尾的 ) 是要刪除的
- 利用換行符號的逃脫字符 \n 可輕鬆刪除結尾的 ) ,也就是,在文字編輯器「取代」功能的對話框內,將 )\n 取代為 \n
- 將 (car 取代為 等號 =
- 將(...... layer-two 0)「空白」取代為 等號 =
- 將剩餘的「空白」取代為 "逗點加空白"「, 」
- 將 (gimp 取代為 pdb.gimp
- 將 減號 - 取代為 _ 底線
- 其它不符合 Python 語法之處,直接手動更改。
- 「取代」之後的程式碼如下所示。
img = pdb.gimp_image_new(width, height, RGB)
layer_one = pdb.gimp_layer_new(img, width, height, RGB_IMAGE, "Bottom", 100, NORMAL_MODE)
layer_two = 0
特別須注意之處
- 接下來,主要修改之處,就是將 Scheme 的函數改成 Python 的函數。
- (plug-in-gradmap ......) 改成 pdb.plug_in_gradmap(......)
- 原本 Scheme code 參數值的指派方式是
(plug-in-gradmap RUN-NONINTERACTIVE img layer-two)
- Python code 函數 pdb.plug_in_gradmap 參數值的指派
- 第1個參數不是 RUN_NONINTERACTIVE
- 第1個參數是 img
- 第2個參數是 layer_two
- 第3個參數是關鍵字參數(Keyword parameter)的形式,因此,可有可無,因為預設已是 RUN_NONINTERACTIVE 。
- 因為 Gradient Map 原本就沒有圖形介面。
- 改用高斯模糊濾鏡為例。
- pdb.plug_in_gauss_iir(img, text_mask, blur_radius, 1, 1, run_mode=RUN_INTERACTIVE)
- run_mode = RUN_INTERACTIVE,會出現濾鏡對話盒。
- run_mode = RUN_NONINTERACTIVE,是預設的情況,不會出現濾鏡對話盒。