[Part I. GIMP基礎功]

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



顯示具有 第 5章 繪畫工具的使用 標籤的文章。 顯示所有文章
顯示具有 第 5章 繪畫工具的使用 標籤的文章。 顯示所有文章

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) #釋放選取區域

5.2 複製貓

模仿工具 Clone Tool
  • 模仿工具,可將圖像的局部或設定的圖樣轉為仿製的樣本,依樣描繪在其它位置上。
  • 本節,把模仿工具當成一般的畫筆工具的操作。
  • 下一節,利用模仿工具清除不想要的圖案。
  • GIMP 中文介面將 Clone Tool 譯成模仿工具。
  • Clone Tool 也可稱為圖章工具,因為它的小圖示就是一個橡皮圖章。


簡而言之,Clone 就是複製
  • Clone 字意是單系繁殖、無性繁殖系。生物學上,Clone 是目前最熱門的研究主題,如,複製羊、複製牛、複製狗。
  • 基於道德的考量,各國的法令都禁止複製人。


若熟悉了畫筆,則......
  • 5.1節的開頭,曾經提過:「鉛筆、畫筆……、模仿、……,這些工具都有筆刷的選項。」因此,若熟悉了畫筆工具的操作,學習模仿工具時,應該能很快上手。
  • 模仿工具,是繪畫工具類。因此,使用時,須注意筆刷外形與大小。

  • 在白色背景下,使用 畫筆工具,描繪三點。
  • 因為選擇貓頭的筆刷,因此「複製出」三個小貓頭。



木紋圖樣與貓頭筆刷的奇妙組合
在白色背景下,使用模仿工具,「複製出」三個小貓頭。

  • 在模仿工具的選項面版內:
    • 選擇貓頭的筆刷 。
    • 將「來源」設為 Pattern 。
    • 選擇木紋圖樣。
  • 因為是使用模仿工具
    • 描繪過的軌跡,會以木紋圖樣來填充。
    • 填充的範圍,由筆刷的大小及形狀來決定。
    • 兩者結合,出現木紋的底,貓頭的形。


木紋圖樣與圓形筆刷的組合
模仿工具,也可用來寫字與畫畫。

在白色的畫布內,畫出數字2的軌跡。

  • 在模仿工具的選項面版內:
    • 選擇圓形筆刷 Circle(19) 。
    • 將「來源」設為 Pattern 。
    • 選擇木紋圖樣。

5.3 用圖章清除不想要的部分

首先,仔細觀察花叢與解說牌
  • 右圖,解說牌已消失不見了,若不仔細觀看,是瞧不出異狀的。
  • 左圖是原圖,右圖是最終成品。

  • 鬱金香花叢前,有個解說牌,可用其它位置的鬱金香,覆蓋掉解說牌。可用模仿工具,清除「鬱金香」解說牌子。


設定填入的圖案
  • 當來源設為 Image 時,模仿工具畫過的軌跡,會以影像中的某部份圖案來填充。
  • 填入的圖案,可以是同一影像視窗的某部份圖案,也可以是不同影像視窗的某部份圖案。
  • 填充的大小,由筆刷的大小及形狀來決定。


設定 Image Source 的方法:
  • 起始預設的游標是 準心的十字與圖章,代表瞄準,提醒用戶選定一點,作為複製的來源。
  • 按住 Ctrl 鍵,用滑鼠左鍵,點一下,決定欲仿製的圖案的起始位置。
  • 放開 Ctrl 鍵,再用滑鼠左鍵,點一下,決定目的地的位置。
  • 欲仿製的區域,會出現 十字指標 。
  • 目的地,會出現箭頭加 圖章指標 。


開始填入圖案:
  • 十字指標與 圖章指標,兩者會一直維持固定的距離。
  • 而後,不要放開滑鼠左鍵,開始以滑鼠指標 ,塗抹作圖區。


實際運作,清除花叢前的解說牌
  • 實際操作時,由於,解說牌後方,有鬱金香的花朵,因此,找一塊類似的圖案,掩蓋解說牌。

  • 按住 Ctrl 鍵,用滑鼠左鍵,點一下左方的鬱金香花朵。
  • 放開 Ctrl 鍵,用滑鼠左鍵,點一下解說牌左側的頂端。
  • 不要放開滑鼠左鍵,此時,解說牌附近的滑鼠游標,為 箭頭與圖章。
  • 移動游標,解說牌的影像會用花與葉的影像蓋掉。
  • 移動圖章指標,直到解說牌完全消失。

5.4 填色工具

填色工具 Bucket Fill Tool
  • 小圖示是顏料桶
  • 作用區域
    • 可在色彩相近的區域內填色填圖
    • 或在選取區域內填色填圖
    • 或全部填滿
  • 填入的類型
    • 可填上前景色
    • 或填上背景色
    • 或填上指定的圖案


欲在矩形區域內,填滿 Pine 圖樣
  • 使用矩形選取工具,拖曳出適當範圍。
  • 使用填色工具,在工具選項面版內,「填滿類型」設為「填上圖樣」,選擇 Pine 。
  • 移動游標,游標是顏料桶,移動至選取區域的內部。
  • 單擊矩形區域的內部,即完成填色的操作。

  • 因為底圖是全白的,「影響區域」雖然沒有設為「填滿整個選擇區域」,而是設為「只將近似的顏色填色」,仍然可以達到相同的效果。


等價的 Python-Fu 程式碼
# 新增影像物件、新增圖層物件
width = 256; height = 128
img = pdb.gimp_image_new(width, height, RGB)
bg_layer = pdb.gimp_layer_new(img, width, height, RGB_IMAGE, "背景", 100, NORMAL_MODE)
pdb.gimp_image_add_layer(img, bg_layer, 0)
pdb.gimp_display_new(img)
# 背景填滿白色
white = (255, 255, 255)
pdb.gimp_context_set_background(white)
pdb.gimp_edit_fill(bg_layer, BACKGROUND_FILL)

#----填上特定圖樣,在指定的範圍內,至少要三個步驟----
#Step 1. 指定圖樣
pdb.gimp_context_set_pattern("Pine")
#Step 2. 設定選取範圍
pdb.gimp_rect_select(img, 32, 30, 108, 90, 0, TRUE, 4)
#Step 3. 填上圖樣
pdb.gimp_bucket_fill(bg_layer, PATTERN_BUCKET_FILL, NORMAL_MODE, 100, 15, FALSE, 0, 0)

  • 啟動 GIMP Python Console
  • 將上面的程式碼,全部選取、複製、再貼到 Python Console 提示符號 >>> 之後,按下 Enter 。
  • 過一會,就會看到結果,如下圖所示。

5.5 混色工具

混色工具 Blend Tool
  • 此工具可在選取區域內,填上所指定的漸層形式。
  • 此工具的用法,與漸層密不可分,也可稱為漸層混色工具。


漸層混色工具的操作,還可參考


漸層混色工具的應用,還可參考


漸層混色工具的練習1:水波狀的圓形紋路
  • 新增一 240x 320 影像。
  • 在混色工具的選項面版內【註1】
    • 「形狀」項目設為放射狀
    • 「重複」項目設為三角形波浪紋
  • 前景色設為黑色,背景色設為白色。此為預設值。
  • 使用混色工具,以 (96, 128) 為起始點,向外拉一小段直線。
  • 線段的長度決定,水波狀的圓形紋路的疏密。
  • 結果如下圖所示。



漸層混色工具的練習2:放射狀的一團光
  • 新增一 240x 320 影像。
  • 在混色工具的選項面版內 【註2】
    • 「形狀」項目設為放射狀
    • 「重複」項目設為無
  • 前景色設為白色,背景色設為黑色。反轉預設值。
  • 使用混色工具,以 (96, 128) 為起始點,向右下角拉一條直線。
  • 結果如下圖所示。



選單及項目名稱的英文:
【註1】 Gradient設FG to BG (RGB),Shape設Radial,Repeat設Triangular wave
【註2】 Gradient設FG to BG (RGB),Shape設Radial,Repeat設None


練習1、練習2,等價的 Python-Fu 程式碼
# 練習1
width = 240; height = 320
img1 = pdb.gimp_image_new(width, height, RGB)
drw1 = pdb.gimp_layer_new(img1, width, height, RGB_IMAGE, "Radial Wave", 100, NORMAL_MODE)
pdb.gimp_image_add_layer(img1, drw1, 0)
pdb.gimp_display_new(img1)
start_x = width * 2 / 5
start_y = height * 2 / 5
# 前景色設為黑色,背景色設為白色
black = (0, 0, 0)
white = (255, 255, 255)
pdb.gimp_context_set_foreground(black)
pdb.gimp_context_set_background(white)

pdb.gimp_blend(drw1, FG_BG_RGB_MODE, NORMAL_MODE, GRADIENT_RADIAL, 100, 0, REPEAT_TRIANGULAR, FALSE, FALSE, 0, 0, 0, start_x, start_y, start_x + 5, start_y + 5)

# 練習2
img2 = pdb.gimp_image_new(width, height, RGB)
drw2 = pdb.gimp_layer_new(img2, width, height, RGB_IMAGE, "Radial Glow", 100, NORMAL_MODE)
pdb.gimp_image_add_layer(img2, drw2, 0)
pdb.gimp_display_new(img2)
# 前景色設為白色,背景色設為黑色
pdb.gimp_context_set_foreground(white)
pdb.gimp_context_set_background(black)

pdb.gimp_blend(drw2, FG_BG_RGB_MODE, NORMAL_MODE, GRADIENT_RADIAL, 100, 0, REPEAT_NONE, FALSE, FALSE, 0, 0, 0, start_x, start_y, start_x + 150, start_y + 150)

  • 啟動 GIMP Python Console
  • 將前面的程式碼,全部選取、複製、再貼到 Python Console 提示符號 >>> 之後,按下 Enter 。
  • 過一會,就會看到結果。
  • 結果圖與前面雷同。
  • 可參考前面手工操作的結果。

5.6 鉛筆工具

鉛筆工具,特色就是硬筆觸

  • 若用鉛筆搭配柔邊筆刷描畫出 2 ,並不會有模糊邊。
  • Circle (19) 與 Circle Fuzzy (19) ,鉛筆表現出相同的硬筆觸。



滑鼠不易精準繪圖
  • 以滑鼠來描繪線條,不容易精確地控制鉛筆工具。
  • 有時用力過猛,彎度不夠平順。

  • 隨意畫線、描點。


  • 隨意畫線、描點、上色。



隨意畫,也有其用途
  • 畫不好也沒關係,加些濾鏡的效果,可抵消不平順之處,有時會出現還不錯的抽象畫作品。
  • 鉛筆工具的作品請,參考「20.3 條帶狀微光的海水」。
    • 選定 Circle(03) 的筆刷,使用鉛筆工具,隨意畫上一些白色的線條。

    • 經過一系列的處理,變成了條帶狀微光的海水。



繪圖板較能準確操控鉛筆工具
  • 使用鉛筆工具,分別畫兩張圖片,一張是眼睛是開的,一張眼睛是閉的。以此產生簡單的 GIF 動畫。動畫的製作,請參考「11.3 眨眨我的眼」。
  • 下圖是使用 ACECAD 繪圖板所畫出的作品。

  • 作者的繪圖能力並不高明,繪圖板只發揮了些微的功效,線條比較平穩些。
  • 如果你是繪圖高手,繪圖板加上 GIMP 的繪圖工具,一定能幫助你發揮想像,盡情創作。


「超精準」操控鉛筆工具的方法:
  • 用 Python 程式碼可以在指定的座標描點、描線。
  • pdb.gimp_pencil(drawable, num_strokes, strokes)
  • 這個函式特別之處是,num_strokes 要大於或等於至少為 2 ,也就是,至少要為 2 。
  • 只描一點,num_strokes = 2 ,要將起點與終點設為相同的座標值。
# 新增影像物件、新增兩個圖層物件
width = 256
height = 128
img = pdb.gimp_image_new(width, height, RGB)
bg_layer = pdb.gimp_layer_new(img, width, height, RGB_IMAGE, "背景", 100, NORMAL_MODE)
pdb.gimp_image_add_layer(img, bg_layer, 0)
drw = pdb.gimp_layer_new(img, width, height, RGBA_IMAGE, "Line", 100, NORMAL_MODE)
pdb.gimp_image_add_layer(img, drw, 0)
pdb.gimp_display_new(img)

# 前景色設為黑色,背景色設為白色
black = (0, 0, 0)
white = (255, 255, 255)
blue = (0, 0, 255)
red = (255, 0, 0)
pdb.gimp_context_set_foreground(black)
pdb.gimp_context_set_background(white)

# 背景填滿白色
pdb.gimp_context_set_background(white)
pdb.gimp_edit_fill(bg_layer, BACKGROUND_FILL)

# 設定前景、設定筆刷
pdb.gimp_context_set_foreground(blue)
pdb.gimp_context_set_brush('Circle (07)')

num_strokes = 10
strokes = [0,0,255,127]
pdb.gimp_pencil(drw, num_strokes, strokes)

# 設定前景、設定筆刷
pdb.gimp_context_set_foreground(red)
pdb.gimp_context_set_brush('Circle (19)')
# 只描一點,起點與終點都設為 (30, 60)
num_strokes = 2
strokes = [30,60,30,60]
pdb.gimp_pencil(drw, num_strokes, strokes)

  • 啟動 GIMP Python Console
  • 將上面的程式碼,全部選取、複製、再貼到 Python Console 提示符號 >>> 之後,按下 Enter 。
  • 過一會,就會看到一條藍色斜線與一個紅點,如下圖所示。