[Part I. GIMP基礎功]

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



8.6 豹紋字

繼續裝扮 Hello!
  • 承接前節,繼續文字美化的工作。
  • 若想為文字塗上不同的紋路,使用不同的圖樣(Pattern)來當文字的底色,要如何做呢?


先要有字體,才能裝扮
  • 新增背景為白色的圖片,產生一大小為256x128,將該圖存為 text.xcf。
  • 使用文字工具,在text.xcf的視窗內,寫上 Hello! 字樣。
  • 這是黑色的 Hello! ,不是彩色的。



所有運算,只作用在黑色的字體上
  • 切換至圖層面版,選取「Hello!」文字圖層。
  • 勾選「鎖定」項目。設定了「鎖定」, 則該圖層的「透明色版」會將鎖住。之後的運算,只作用在紅綠藍三色版。
  • 原本透明的部份,將不會受到任何影響。只影響原本有顏色的地方,也就是,只有文字 Hello! 會受影響。



所有顏料,只塗滿在黑色的字體上
  • 現在,要為黑色的 Hello! ,穿上彩色的花紋。
  • 在填色工具的選項面版內
    • 「填滿類型」Fill Type 設為填上圖樣
    • 「影響區域」Affected Area 設為填滿整個選擇區域


  • 單擊填色工具按鈕。
  • 點一下 text.xcf 圖片視窗,執行[影像] / 選擇 / 全選。
  • 點一下 text.xcf 圖片的 Hello! 字樣。
  • 而後,字樣會以 Pine 圖樣填滿。



披上豹皮的字體
  • 在圖樣面版內。再選一個喜歡的圖樣。
  • 這次選 Leopard,豹紋的圖樣。
  • 此時,仍在使用填色工具。
  • 此時, text.xcf 的文字圖層,仍是在全選的狀態之下。
  • 再點一下 text.xcf 圖片的 Hello! 字樣。
  • 字樣會以豹紋圖樣填滿,得到一個披上豹皮的 Hello! 。



等價的 Python-Fu 程式碼
  • 接續前面的練習操作,改用 Python-Fu 自動化字體的生成流程。
  • 下面的程式碼,分成三大部份:
    • 首先,要準備好新的影像、新的圖層。
    • pdb.gimp_text_fontname(...) 寫上粗體字的 Hello!
    • pdb.gimp_bucket_fill(...) 產生填圖的效果。豹紋字與漸層字相比較,程式碼只有這部份有差異。由此可知,豹紋字的程式碼比較短。

# Part 1.
# 圖片的尺寸
width = 256
height = 128
# 前景色設為黑色,背景色設為白色
black = (0, 0, 0)
white = (255, 255, 255)

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_context_set_background(white)
pdb.gimp_edit_fill(bg_layer, BACKGROUND_FILL)

pdb.gimp_display_new(img)


# Part 2.
string = "Hello!"
font_size = 72
#font = "Sans Bold" # 竟然沒有粗體字的效果
font = "DejaVu Sans Bold"
# 測試環境為 Ubuntu 11.10
# 需注意你所使用的作業系統有無 "DejaVu Sans Bold" 字型

text_ext = pdb.gimp_text_get_extents_fontname(string, font_size, PIXELS, font)
text_width = text_ext[0]
text_height= text_ext[1]
# 將 Hello! 字樣放在適當的地方
text_offx = width/2 - text_width/2
text_offy = height/2 - text_height/2

text_layer = pdb.gimp_layer_new(img, width, height, RGBA_IMAGE, "Hello!", 100, NORMAL_MODE)
pdb.gimp_image_add_layer(img, text_layer, 0)

pdb.gimp_context_set_foreground(black)
tmp_layer = pdb.gimp_text_fontname(img, text_layer, text_width, text_height ,string, 0, TRUE, font_size, PIXELS, font)
pdb.gimp_layer_set_offsets(tmp_layer, text_offx, text_offy)
pdb.gimp_floating_sel_anchor(tmp_layer)


# Part 3.
# 所有運算,只作用在黑色的字體上
# 這一行是重要的關鍵
pdb.gimp_layer_set_lock_alpha(text_layer, TRUE)

pdb.gimp_selection_all(img)

#pattern_name = "Pine"
pattern_name = "Leopard"
pdb.gimp_context_set_pattern(pattern_name)

pdb.gimp_bucket_fill(text_layer, PATTERN_BUCKET_FILL, NORMAL_MODE, 100, 15, FALSE, 0, 0)

pdb.gimp_selection_none(img)

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