[Part I. GIMP基礎功]

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



顯示具有 第 8章 文字範例 標籤的文章。 顯示所有文章
顯示具有 第 8章 文字範例 標籤的文章。 顯示所有文章

8.1 再叮嚀,同功異式

四個介面操作的小叮嚀
  • 本章是簡單的應用,若你才剛開始學習 GIMP 與影像處理,那麼,這些範例將是不錯的第一步。
  • 在 GIMP 裡,同一種功能常有好幾種執行的方式,因此,用戶可以選擇自己較順手的方式來操作 GIMP 。
  • 本節有四個介面操作的小叮嚀:
    1. 執行選單功能的方式。
    2. 設定文字顏色的方式。
    3. 設定漸層參數的方式。
    4. 設定圖樣參數的方式。


叮嚀 1.
  • 對於選單,雖然視窗上方有選單列,但有時按滑鼠的右鍵來執行選單內的功能會較順手。



叮嚀 2.
  • 「前景/背景色彩」面版雖可用於設定所需的顏色,但文字工具的選項面版內有「顏色」參數的按鈕,此按鈕可啟動設定文字顏色的對話盒。



叮嚀 3.
  • 「漸層」面版雖可用於設定所需的漸層,但混色工具的選項面版內有「漸層」參數的按鈕,按下按鈕後可開啟一清單,由此也可選擇特定的漸層。



叮嚀 4.
  • 「圖樣」面版雖可用於設定所需的圖樣,但填色工具的選項面版內有「圖樣」參數的按鈕,按下按鈕後可開啟一清單,由此也可選擇特定的圖樣。

8.2 文字工具

文字工具,操作時,要注意四個地方
  1. 影像視窗:單擊文字工具的按鈕,而後再點一下作圖區的特定位置,此點決定了文字所安放的位置。之後,仍可移動「文字」的位置。
  2. 圖層面版:「文字」以「文字圖層」的方式,存放在XCF圖檔內,在文字圖層尚未轉變為一般的圖層之前,仍可透過文字工具的選項面版,重新設定文字的字型、尺寸及顏色。
  3. GIMP文字編輯器:由此鍵入欲書寫的文字內容。
  4. 文字工具的選項面版:此面版用於設定與「文字」相關的參數。


練習文字工具之前,先要有一張的圖片
  • 執行[影像] / 檔案 / 新增 【註1】 ,出現「製作新的圖片」對話盒,將寬度設為256(像素),高度設為128(像素),「填上」設為背景顏色(或白色) ,產生一大小為256x128,背景為白色的圖片。
  • 點選該圖片視窗,執行[影像] / 檔案 / 另存新檔 【註2】,出現「儲存影像」對話盒,將該圖存為 text.xcf 檔,XCF為GIMP的原生檔案格式,支援多圖層的功能。


注意四個地方
  1. 單擊文字工具,再點一下Text.xcf圖片的視窗,出現「GIMP文字編輯器」。
  2. 一旦鍵入文字,圖層面版內,就會出現「文字圖層」。
  3. 在文字編輯器內,鍵入 Hello! 。
  4. 可在文字工具的選項面版內更改字型、尺寸、顏色的參數設定值。
  • 下圖練習文字工具的使用。



文字圖層的特殊性質
  • 文字圖層也是圖層,是一種特殊的圖層。
    • 文字圖層的小圖示有一個「T」字,以鍵入的文字,作為圖層的名稱。
    • 在文字工具的選項面版內,可設定文字的顏色,例如,「愛」字是紅色的。
  • 若要為文字加上特殊效果,通常,在圖層面版內,需要勾選「鎖定」項目,讓該圖層的透明色版,不受影響,而讓運算只作用在,有顏色的字體上。


文字圖層 ⇒ 一般圖層
  • 下圖的 LOVE_GIMP_black.xcf,有三個文字圖層,與一個白色背景的圖層。


  • 下圖的LOVE_GIMP.xcf,只剩一個文字圖層,在增添了漸層的效果之後,有兩個文字圖層,已轉變為一般的圖層。



選單及項目名稱的英文:
【註1】 [Image] / File / New,Width設256(pixels),Height設128(pixels),Fill Type設Background color(或White)
【註2】 [Image] / File / Save As

8.3 文字圖層

額外的選單項目
  • 使用文字工具,寫字時,會產生「文字圖層」。
    • 文字圖層,為特殊的圖層。
    • 文字圖層,通常,以鍵入的文字內容,作為圖層名稱。
    • 可移動文字圖層,決定文字要置於何處。
    • GIMP 不斷地加強文字工具。
    • 圖層右鍵選單之中,針對文字圖層,有額外的選單項目。




文字圖層變為一般圖層
  • 若執行「捨棄文字資訊」,文字圖層會變為一般圖層,背景為透明。
  • 多數的運算,如,濾鏡,都會讓文字圖層會變為一般圖層。
  • 當文字圖層變為一般的圖層,只要有勾選「鎖定」項目,仍可輕易地處理字體的部份,為字體添加一些效果。

8.4 漸層面版與「漸層」選項

兩種選定漸層的方式
  1. 工具箱視窗內,有筆刷、圖樣、漸層的設定鈕。因此,單擊漸層的設定鈕,可以啟動漸層面版。在面版內,選擇所需的漸層。
  2. 對於工具按鈕,雙擊特定按鈕,可啟動該按鈕的工具選項面版。因此,雙擊混色工具的按鈕,會出現混色工具的選項面版,提供了「漸層」選項,可透過下拉式選單,設定混色用的漸層。

  • 在此例,我選的是 Land 1 漸層。在漸層面版,選了特定的「漸層」,其結果,也會反應到混色工具的選項面版內。
  • 左圖是漸層面版,右圖是混色工具的選項面版。



兩種設定顏色的方式
  1. 單擊前景色與背景色的設定鈕,可啟動對話盒來設定顏色。
  2. 可使用「前景/背景色彩」面版來設定顏色。

  • 常用的設定方式是這兩種,不過,設定顏色並不只有兩種方法。例如,色盤面版也可以用來設定顏色。


前景色背景色對漸層的影響
  • 在漸層面版內,前三個項目與前景背景的顏色有關,隨著前景色與背景色的改變,其所構成的漸層也跟著改變。

  • 「漸層」選項的前三個項目,與前景/背景的顏色有關。
  • 若選擇【FG 到 BG (HSV 順時針色相)】,隨著前景色與背景色的改變,其所構成的「漸層」也跟著改變。


藍到綠的漸層
  • 左圖是「前景/背景色彩」面版,前景色設為藍色,背景色設為綠色。
  • 右圖是混色工具的選項面版,此時,「漸層」是藍色漸變為綠色。

8.5 漸層字

裝扮一下又何妨
  • 在圖片中,常須要為圖片加上一些文字說明。
  • 文字工具按鈕,功能雖然陽春,但可達到大部份的要求,若要寫黃色的字,只要將前景色改變成黃色。
  • 只是若想為文字穿上一身五顏六色的夢幻彩衣,該如何做呢?


先要有字體,才能裝扮
  • 新增一張大小為256x128背景為白色的圖片。
  • 將該圖存為 text.xcf 檔,XCF為GIMP的原生檔案格式,支援多圖層的功能。
  • 單擊工具按鈕中文字按鈕,點一下text.xcf視窗的作圖區域,出現「GIMP文字編輯器」。在文字編輯器內,鍵入 Hello! 。


  • 在文字工具選項面版內
    • 字型 設為 Sans Bold ,此為粗體字型
    • 大小 設為 72


  • 移動文字圖層,將 Hello! 字樣放在適當的地方。
  • 這是黑色的 Hello! ,不是彩色的。



所有運算,只作用在黑色的字體上
  • 現在,圖層面版內,有兩個圖層,「Hello!」文字圖層與「背景」圖層。
  • 選取「Hello!」文字圖層,勾選「鎖定」項目,讓透明色版不受影響。
  • 之後,在文字圖層上,所有運算,將只作用在有顏色的地方。
  • 透明的部份,將不會有任何反應。



Land 1的漸層字
  • 點一下text.xcf圖片的左側的中間。
  • 按住滑鼠左鍵,在text.xcf圖片上,由左至右拉一條直線。
  • 放開滑鼠左鍵,Hello! 字樣變成漸層字。
  • 下圖為Land 1的漸層字。



其它效果的漸層字
  • 在混色工具的選項面版內,混色用的漸層,可設為「前景色至背景色(RGB)」。
  • 如此設定,依據前景色與背景色的設定,可製作出不同顏色漸變的字體。
  • 在工具箱視窗內,雙擊前景色(與背景色)的設定按鈕,設定色彩鮮豔的前景色與背景色。
  • 同樣地,在text.xcf圖片視窗內,由左至右拉一條直線。
  • 放開滑鼠左鍵,Hello! 字樣變成「前景色至背景色」的漸層字。



熱帶島嶼的風格
  • 也可由上至下,拉一條直線。
  • 下圖為Caribbean Blues的漸層字。



等價的 Python-Fu 程式碼
  • 接續前面的練習操作,改用 Python-Fu 自動化字體的生成流程。
  • 下面的程式碼,分成三大部份:
    1. 首先,要準備好新的影像、新的圖層。
    2. pdb.gimp_text_fontname(...) 寫上粗體字的 Hello!
    3. pdb.gimp_blend(...) 產生漸層的效果。

# 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)

# 可試試不同的漸層效果
#gradient_name = "Land 1"
gradient_name = "Caribbean Blues"

pdb.gimp_context_set_gradient(gradient_name)
offset =0 ;repeat = REPEAT_NONE;reverse = FALSE;
supersample = FALSE ; max_depth = 0 ; threshold = 0;
dither = TRUE ;

# 可試試不同的漸層起始點與終點對字體的影響
#x1 = 0; y1 = height/2; x2 = width; y2 = height/2 # 相當於由左至右拉一條直線
x1 = width/2; y1 = 0; x2 = width/2; y2 = height - text_offy # 相當於由上至下拉一條直線

pdb.gimp_blend(text_layer, CUSTOM_MODE, NORMAL_MODE, GRADIENT_LINEAR, 100, offset, repeat, reverse, supersample, max_depth, threshold, dither, x1, y1, x2, y2)

pdb.gimp_selection_none(img)

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

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 。
  • 過一會,就會看到豹紋字,如下圖所示。

8.7 身穿花花衣

繼續裝扮 Hello!
  • 承接前節的範例,繼續美化文字的工作。
  • 除了可利用程式內建的圖樣,來為文字填上不同的紋路,任何圖案與影像若是合適,也可以作為文字的底色與紋路。
  • 鬱金香的紫色與紅色還蠻醒目的,下面利用花朵的外形與色澤來寫字。


有美美的圖,才能裝扮
  • 以GIMP開啟 tulip.jpg 鬱金香。
  • 將圖片另外儲存為 tulip_text.xcf, XCF 格式較適於儲存過程中的半成品。



還要有字體,才能裝扮
  • 在工具箱中,按下文字按鈕,點一下tulip_text.xcf圖片顯示視窗。
  • 在GIMP文字編輯器的輸入框,鍵入 Hello! 。
  • 在文字工具的選項面版內,將字型樣式設為Sans Bold,大小設為 120。
  • 點選tulip_text.xcf圖片顯示視窗,將 Hello! 字樣放在適當的地方。把小寫的 l 放在鬱金香牌子的上方。



產生 Hello! 字樣的選取區域
  • 要選著黑色的 Hello! 字樣,有很多方法。
  • 因為有透明的背景,因此可在文字圖層上,執行[影像] / 圖層 / 透明度 / 透明區域轉為選擇區域 【註1】 。
注意!
「透明區域轉為選擇區域」的原文為Alpha to Selection,實際上,執行後,是「不透明」的區域被選著。


顯示 Hello! 字樣的選取區域
  • 現在,圖層面版內,文字圖層的眼睛圖示按掉,使文字圖層的效果不顯示出來。

  • 在tulip_text.xcf視窗,會看到的情形,如下圖所示,在鬱金香上,產生一個 Hello! 字樣的選取區域。



反轉選取區域,填滿淺藍色
  • 在圖層面版內,點選「背景」圖層,也就是鬱金香的圖。
  • 點選tulip_text.xcf視窗,執行[影像] / 選擇 / 相反 【註2】 。
  • 將前景色設為淺藍,執行[影像] / 編輯 / 填上前景顏色 【註3】 。
  • 結果圖為淺藍的底色,身穿花花衣的 Hello! 字樣,如下圖所示,還看得出它是鬱金香嗎?



選單及項目名稱的英文:
【註1】 [Image] / Layer / Transparancy / Alpha to Selection
【註2】 [Image] / Select / Invert
【註3】 [Image] / Edit / Fill with FG Color


等價的 Python-Fu 程式碼
  • 接續前面的練習操作,改用 Python-Fu 自動化字體的生成流程。
  • 下面的程式碼,分成三大部份:
    1. 首先,要載入影像 tulip.jpg ,取得 tulip.jpg的圖層物件。
    2. pdb.gimp_text_fontname(...) 寫上粗體字的 Hello!
    3. pdb.gimp_edit_fill(...) 填上藍色,凸顯出身穿花花衣的 Hello!

# Part 1.
# 下載 tulip.jpg 鬱金香圖案
# 將 tulip.jpg 放在你找得到的位置,例如,tmp 目錄
#filename = os.getcwd()+"/"+"tulip.jpg"
filename = "/tmp/tulip.jpg"
tulip_img = pdb.file_jpeg_load(filename, filename)
tulip_layer = pdb.gimp_image_get_active_layer(tulip_img)
# 圖片的尺寸
width = pdb.gimp_image_width(tulip_img)
height = pdb.gimp_image_height(tulip_img)

pdb.gimp_display_new(tulip_img)


# Part 2.
string = "Hello!"
font_size = 120
#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(tulip_img, width, height, RGBA_IMAGE, "Hello!", 100, NORMAL_MODE)
pdb.gimp_image_add_layer(tulip_img, text_layer, 0)

pdb.gimp_context_set_foreground(black)
tmp_layer = pdb.gimp_text_fontname(tulip_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.
# 利用 Hello! 字體產生選取區域
# 這一行是重要的關鍵
pdb.gimp_selection_layer_alpha(text_layer)

pdb.gimp_selection_invert(tulip_img)

# 前景色設為天空藍
sky_blue = (194, 226, 251)
pdb.gimp_context_set_foreground(sky_blue)
pdb.gimp_edit_fill(tulip_layer, FOREGROUND_FILL)

pdb.gimp_layer_set_visible(text_layer, FALSE)
pdb.gimp_selection_none(tulip_img)

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

8.8 立體字與凹凸貼圖濾鏡(Bump Map)

到處都有它的蹤影
  • 除了漸層字、紋理字,常見的字體效果還有立體字與陰影字。
  • 立體字,可在許多地方看到它的蹤影,有些 Script-Fu 產生的標誌是立體字,例如,Chip Away。

  • 執行 [影像] / 檔案 / Create / Logos / Chip Away

  • 由圖層面版可觀察「Chip Away」字體的圖層結構。
  • 「Chip Away」字體共有三個圖層
    • 一個圖層放置凹凸貼圖(Bump Map)濾鏡所產生的立體字
    • 一個圖層放置字的陰影
    • 一個圖層當背景



測試凹凸貼圖濾鏡的 Azimuth 參數
  • 凹凸貼圖濾鏡位於「濾鏡 / 映射 / 凹凸貼圖」選單內,此濾鏡可製造立體的感覺,立體字多與此濾鏡有關。
  • 以下測試凹凸貼圖濾鏡的 Azimuth 參數, Azimuth 可譯為「方位角」。

  • test.xcf 有兩個圖層
    • grey 圖層是全灰的圖案
    • bw_square 圖層是外圍黑中間白的圖案

grey圖層

bw_square圖層

  • 再來,要對 grey 圖層製作立體的效果。先確定在圖層面版內已選取 grey 圖層。


  • 點選影像視窗,執行[影像] / 濾鏡 / 映射 / 凹凸貼圖 【註1】 , 參數採用預設值。
    • 「凹凸貼圖」的英文是「Bump Map」,而此濾鏡的第一個參數也是「Bump map」。
    • 在下圖的對話盒,選擇了「bw_square 圖層」作為映射圖,映射圖決定了「grey 圖層」的凹陷與凸起。
    • Azimuth 預設為135,光源在左上方,因此右下方有黑邊的陰影。


  • 凹凸貼圖濾鏡是以右方作為方位角0度,上方為90度。
    • 若光源在上方,則陰影會在下方。
    • 若光源在左上方(方位角135度),則陰影會出現在右下方(方位角315度)。
  • 以下試驗不同方位角的凹凸效果,列出八個角度的結果圖。





選單及項目名稱的英文:
【註1】 [Image] / Filters / Map / Bump Map


試驗不同的方位角,等價的 Python-Fu 程式碼
  • 接續前面的練習操作,改用 Python-Fu 自動化操作的流程。

# 圖片的尺寸
width = 154
height = 149
# 顏色的設定
white = (255, 255, 255)
black = (0, 0, 0)
grey = (192, 192, 192)

img = pdb.gimp_image_new(width, height, RGB)
square = pdb.gimp_layer_new(img, width, height, RGB_IMAGE, "bw_square", 100, NORMAL_MODE)
pdb.gimp_image_add_layer(img, square, 0)

# 準備好新的影像、新的圖層,並顯示影像
pdb.gimp_display_new(img)

# bw_square 圖層,是外圍黑、中間白的圖案
pdb.gimp_context_set_foreground(black)
pdb.gimp_edit_fill(grey_layer, FOREGROUND_FILL)

pdb.gimp_selection_all(img)
pdb.gimp_selection_shrink(img, 27)
pdb.gimp_context_set_background(white)
pdb.gimp_edit_fill(square, BACKGROUND_FILL)
pdb.gimp_selection_none(img)

# grey 圖層,是全灰的圖案
grey_layer = pdb.gimp_layer_new(img, width, height, RGBA_IMAGE, "grey", 100, NORMAL_MODE)
pdb.gimp_image_add_layer(img, grey_layer, -1)
pdb.gimp_context_set_foreground(grey)
pdb.gimp_edit_fill(grey_layer, FOREGROUND_FILL)

blur_radius = 10
pdb.plug_in_gauss_iir(img, square, blur_radius, 1, 1)

# 若光源在左上方(方位角135度),
# 則陰影會出現在右下方(方位角315度)。
Azimuth = 135
pdb.plug_in_bump_map(img, grey_layer, square, Azimuth, 45, 3, 0, 0, 0, 0, TRUE, FALSE, 0)
# 可試試不同的方位角

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