- [須知4.寫作的習慣],以「畫框」為例,解說作者寫文章的習慣。一再強調,讀者明瞭作者的習慣,有助於文章的閱讀與學習 GIMP 的操作。
- 而這種文章的呈現方式,也有利於快速撰寫出 Script-Fu 與 Python-Fu 的程式碼。
本節接續前一節的內容,並綜合這三節的內容
以「畫框」為例
- 以兩欄的方式,解說「畫框」製作的過程,附加上「操作流程」對應的程式碼。
- 有些操作步驟,並沒有附圖。若能一步一步操作GIMP,製作出「畫框」,讀者應能看懂其他的範例。
- 附上 Script-Fu 與 Python-Fu 的程式碼,讓讀者體會程式碼的便捷之處。
 | 畫框的製作細節,與所要放置的畫有關。
框架大小與相關參數的設定,要視實際情況而定。 |
新增圖層
 |
產生一張黑色底色的新影像。
|
新增圖層,對應的 Python-Fu Code
# 畫框的尺寸
width = 106
height = 131
img = pdb.gimp_image_new(width, height, RGB)
bw_frame = pdb.gimp_layer_new(img, width, height, RGB_IMAGE, "bw_frame", 100, NORMAL_MODE)
pdb.gimp_image_add_layer(img, bw_frame, 0)
pdb.gimp_display_new(img)
pattern_layer = 0
#將填滿黑色的動作併入下一段程式碼的 for 迴圈之內
產生黑白交替的邊框
 |
執行[影像] / 選擇 / 全選 【註1】 , 執行[影像] / 選擇 / 縮小 【註2】 ,將選取區域往內退縮3個像素。將選取區域填上白色。
執行[影像] / 選擇 / 縮小 【註3】 ,再將選取區域往內退縮3個像素。
將選取區域填上黑色。
執行[影像] / 選擇 / 縮小 【註4】 ,再將選取區域往內退縮3個像素。將選取區域填上白色。
重複上述動作,產生黑白交替的邊框。 |
產生黑白交替的邊框,對應的 Python-Fu Code
# 前景色設為黑色,背景色設為白色
black = (0, 0, 0)
white = (255, 255, 255)
pdb.gimp_context_set_foreground(black)
pdb.gimp_context_set_background(white)
pdb.gimp_selection_all(img)
for i in range(0,3):
#用前景色,塗滿黑色
pdb.gimp_edit_fill(bw_frame, FOREGROUND_FILL)
pdb.gimp_selection_shrink(img, 3)
#用背景色,塗滿白色,留下外圍的黑色邊框
pdb.gimp_edit_fill(bw_frame, BACKGROUND_FILL)
pdb.gimp_selection_shrink(img, 3)
填滿 Parque #1 圖樣
 |
新增一個圖層,名為pattern。
使用填色工具,在選項面版內 【註5】 ,「填滿類型」設填上圖樣,使用 Parque #1 ,將圖層填滿。 |
填滿 Parque #1 圖樣,對應的 Python-Fu Code
pdb.gimp_selection_all(img)
pattern_layer = pdb.gimp_layer_copy(bw_frame, TRUE)
pdb.gimp_image_add_layer(img, pattern_layer, -1)
pdb.gimp_layer_set_name(pattern_layer, "pattern")
pdb.gimp_image_set_active_layer(img, pattern_layer)
pdb.gimp_selection_all(img)
pdb.gimp_context_set_pattern("Parque #1")
pdb.gimp_edit_fill(pattern_layer, PATTERN_FILL)
pdb.gimp_selection_none(img)
產生立體的邊框

 | 對Pattern圖層,執行[影像] / 濾鏡 / 映射 / 凹凸貼圖 【註6】 ,Bump map映射圖設為bw_frame圖層。其餘參數採用預設值。
|
產生立體的邊框,對應的 Python-Fu Code
bump_layer = bw_frame
azimuth = 135; elevation = 45; depth = 3
pdb.plug_in_bump_map(img, pattern_layer, bump_layer, azimuth, elevation, depth, 0, 0, 0, 0, True, False, 0)
完整的 Python-Fu Code ,與測試程式碼的功效

# 畫框的尺寸
width = 106
height = 131
img = pdb.gimp_image_new(width, height, RGB)
bw_frame = pdb.gimp_layer_new(img, width, height, RGB_IMAGE, "bw_frame", 100, NORMAL_MODE)
pdb.gimp_image_add_layer(img, bw_frame, 0)
pdb.gimp_display_new(img)
pattern_layer = 0
# 前景色設為黑色,背景色設為白色
black = (0, 0, 0)
white = (255, 255, 255)
pdb.gimp_context_set_foreground(black)
pdb.gimp_context_set_background(white)
pdb.gimp_selection_all(img)
for i in range(0,3):
#用前景色,塗滿黑色
pdb.gimp_edit_fill(bw_frame, FOREGROUND_FILL)
pdb.gimp_selection_shrink(img, 3)
#用背景色,塗滿白色,留下外圍的黑色邊框
pdb.gimp_edit_fill(bw_frame, BACKGROUND_FILL)
pdb.gimp_selection_shrink(img, 3)
pdb.gimp_selection_all(img)
pattern_layer = pdb.gimp_layer_copy(bw_frame, TRUE)
pdb.gimp_image_add_layer(img, pattern_layer, -1)
pdb.gimp_layer_set_name(pattern_layer, "pattern")
pdb.gimp_image_set_active_layer(img, pattern_layer)
pdb.gimp_selection_all(img)
pdb.gimp_context_set_pattern("Parque #1")
pdb.gimp_edit_fill(pattern_layer, PATTERN_FILL)
pdb.gimp_selection_none(img)
bump_layer = bw_frame
azimuth = 135; elevation = 45; depth = 3
pdb.plug_in_bump_map(img, pattern_layer, bump_layer, azimuth, elevation, depth, 0, 0, 0, 0, True, False, 0)
選單及項目名稱的英文:
【註1】[Image] / Select / All
【註2】[Image] / Select / Shrink
【註3】[Image] / Select / Shrink
【註4】[Image] / Select / Shrink
【註5】Fill Type設Pattern fill,選Parque #1
【註6】[Image] / Filters / Map / Bump Map
關於註腳的功用請參看
1.9節。