[Part I. GIMP基礎功]

[Part II. 一種效果的誕生]
[Part III. Script-Fu的秘密]



5.1 關於筆刷

筆刷是繪畫工具的共同選項
: 鉛筆、畫筆、橡皮擦、噴槍、模仿、癒合、透視法複製、模糊化/清晰化、塗抹、漂白/燻黑,這些工具都有筆刷的選項。而墨水筆工具有自己獨特的筆觸的設定方式。

因為有筆刷的選項,因此,這些工具的操作方式,都類似於用畫筆,可在畫布上塗抹、描線、著色、繪圖。


畫筆工具為例
  • 下圖,以畫筆工具為例,選項面版內,提供了繪畫時所需的筆刷樣式。


小技巧
雙擊工具按鈕,會出現該工具的選項面版。


筆觸的間隔
  • 間距超過100%,筆觸之間,會有空隙。
  • 左圖,間距100%。右圖,間距200%。



筆刷對創作的影響很大
  • 因為有葡萄藤筆刷,因此可製作出有趣的外框。使用畫筆工具,將筆刷改為葡萄藤 Vine(77x71) 。在畫布邊界畫上一圈,如此便產生好看的邊框。



製作一個特殊造型的筆刷,是很容易的
  • 先使用矩形選取工具,剪下貓的頭。
  • 而後,將背景除去,只留下貓的頭。
  • 執行[影像] / 編輯 / 複製 【註1】 ,將貓頭的圖案放入剪貼簿。
  • 筆刷面版的第一個筆刷,就是剪貼簿的內容物。



儲存筆刷 ,方法一
  • 執行[影像] / 編輯 / 貼上為 / New Brush 【註2】 ,出現一個對話盒。
  • 對話盒是一個「將圖案儲存為筆刷」的 Script-Fu 。
  • 將筆刷名稱設為cat,將檔案名稱設為 cat_head_brush ,將間隔設為155
  • 按下「確定」按鈕後,在筆刷面版內,多了一個貓頭筆刷。



儲存筆刷 ,方法二
  • 執行[影像] / 檔案 / 另存新檔 【註3】 , 將檔案另外存成cat_head_brush.gbr。
  • gbr 是 GIMP 筆刷的檔案格式。
  • gbr 只支援 GrayScale 與 RGBA 的影像模式。
  • 筆刷的間隔,是可以調整的,數值是筆刷直徑的百分比,此參數決定了兩次筆觸之間的距離。
  • 間隔大於100,兩次的筆觸會有空隙。
  • 間隔小於100,兩次的筆觸會有重疊。
  • 而後,將 cat_head_brush.gbr 檔案拷貝,複製筆刷檔,到所屬的目錄下,C:\Documents and Settings\user_name\.gimp-2.6\brushes。


試用自製的筆刷
  • 將貓頭筆刷的間隔設為155,因此,描邊時,貓頭之間會相離,而不重疊。
  • 可以隨意亂畫幾筆,也可以使用「依路徑描邊」的功能或「依選擇區域描邊」的功能,畫出規律分佈的貓頭。

  • 前圖的操作步驟:
    • 新增一張大小為512 x 512,背景為白色的圖片。
    • 使用橢圓選取工具,產生一個圓形的選取區域。
    • 執行[影像] / 編輯 / 依選擇區域描邊 【註4】 ,出現對話盒。
    • 在對話盒內,點選使用繪畫工具描邊的選項。
    • 執行後,貓頭圖案,沿著選區的邊緣,整齊排列成圓形。


也可利用路徑工具來描邊
  • 路徑工具,也稱 Bezier 曲線工具。
  • 「依路徑描邊」的功能與「依選擇區域描邊」的功能幾乎完全相同,可將路徑用筆刷填滿。
  • 先用路徑工具繪製一條曲線,再執行「依路徑描邊」,若選擇貓頭的筆刷,便能沿著路徑描繪出貓頭的筆觸。


選單及項目名稱的英文:
【註1】 [Image] / Edit / Copy
【註2】 [Image] / Edit / Paste as / New Brush
【註3】 [Image] / File / Save As
【註4】 [Image] / Edit / Stroke Selection


規律分佈的貓頭,等價的 Python-Fu 程式碼
  • 下面的程式碼,分成四大部份:
    1. pdb.file_uri_load(...) 載入貓頭的影像
    2. pdb.gimp_display_new(...) 顯示出新增的影像與其底圖
    3. pdb.gimp_edit_copy(...) 透過剪貼簿來產生筆刷
    4. pdb.gimp_edit_stroke(...) 描繪出規律分佈的貓頭

# Part 1. 載入貓頭影像
# 指定 uri 來載入影像
file_uri ="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiUhHtpedp26D5w8fIXYjUpD7W_HJ5C9kTV5k4NIsfI0pY4vwDdcLFyAUK859_Wi6Ktwelttcgh6FxGMAxejLkG11yiKO5Y-vYHbrn1rx0nZxv2Xd3vP4XTiJYkM6iVGOB5-LIhxwa9Ejn/s400/cat_head_brush.png"
img_cat = pdb.file_uri_load(file_uri, file_uri)
drw_cat = pdb.gimp_image_get_active_layer(img_cat)
pdb.gimp_display_new(img_cat)

# Part 2. 新增影像、繪製底圖
width = 512; height = 512
img = pdb.gimp_image_new(width, height, RGB)
drw = pdb.gimp_layer_new(img, width, height, RGB_IMAGE, "Background", 100, NORMAL_MODE)
pdb.gimp_image_add_layer(img, drw, 0)
white = (255, 255, 255)
blue = (197, 224, 253)
# 白色底圖(...)
pdb.gimp_context_set_background(white)
pdb.gimp_selection_all(img)
pdb.gimp_edit_fill(drw, BACKGROUND_FILL)
# 3 px 藍色外框線
pdb.gimp_context_set_brush("Circle (05)")
pdb.gimp_context_set_foreground(blue)
pdb.gimp_selection_shrink(img, 2)
pdb.gimp_edit_stroke(drw)
pdb.gimp_selection_none(img) #釋放選取區域
pdb.gimp_display_new(img)

# Part 3. 產生貓頭筆刷
non_empty = pdb.gimp_edit_copy(drw_cat)
# 方法 a.
# 可以不必儲存筆刷,直接透過剪貼簿,來使用貓頭筆刷的筆觸
# 筆刷面版的第一個筆刷,就是剪貼簿的內容物
# pdb.gimp_context_set_brush("剪貼簿")

# 方法 b.
# 也可儲存筆刷,再使用筆刷
pdb.script_fu_paste_as_brush("cat", "cat_head_brush", 155)
pdb.gimp_context_set_brush("cat")

# 之後,仍可調整筆觸的間隔 spacing
pdb.gimp_brushes_set_spacing(155)

# Part 4. 產生規律分佈的貓頭
pdb.gimp_ellipse_select(img, 0, 0, width - 1, height -1 , CHANNEL_OP_REPLACE , FALSE, FALSE, 0)
pdb.gimp_selection_shrink(img, 70)
pdb.gimp_edit_stroke(drw)
pdb.gimp_selection_none(img) #釋放選取區域