[Part I. GIMP基礎功]

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



24.3 一步一步做,讓波浪產生

以下,操作GIMP圖形介面,一步一步做,來產生水波動畫。藉由這過程,來體會程式碼的意思。

Step 1. 在GIMP的圖層面版內,一個圖層代表一個畫格。首先,計算出需產生多少畫格。若是6個畫格的動畫,則水波的相移為60度。

前面的步驟,對應到程式碼中的變數設定:
  • num-frames=6
  • Phaseshift=60,360÷6=60
  • 一開始,Phase=0
  • remaining-frames=6

下圖是,Moon_and_light.jpg的影像視窗。


下圖,在圖層面版內,顯示了JPEG影像原本只有一個圖層,名稱為「背景」(Background)。


gimp-image-duplicate函數的目的是,複製影像的所有圖層、所有色版、及相關的資料,生成新的影像複本。
gimp-image-duplicate函數相當於,在GIMP圖形介面上,執行[影像] / 圖片 / 重製【註1】。

前面兩步驟,對應到下列的程式碼。
44: (image (car (gimp-image-duplicate img)))
45: (source-layer (car (gimp-image-get-active-layer image))))

Step 2. 略過產生影像複本的步驟,直接在原本Moon_and_light.jpg的影像視窗內操作。Moon_and_light.jpg影像只有一個名為「背 景」(Background)的圖層。在圖層面版內,複製「背景」圖層【註2】,產生一個新的圖層,將新的圖層更名為Frame 2(replace)。


前面的步驟,對應到下列的程式碼。
54: (waves-layer (car (gimp-layer-copy source-layer TRUE)))
55: (layer-name (string-append "Frame "
56: (number->string
57: (- (+ num-frames 2)
58: remaining-frames) 10
59: )
60: " (replace)"))
61: )
62: (gimp-layer-set-lock-alpha waves-layer FALSE)
63: (gimp-image-add-layer image waves-layer -1)
64: (gimp-drawable-set-name waves-layer layer-name)

string-append函數:把字串串接起來。
number->string函數:把數字變字串。

一開始remaining-frames=num-frames,
故num-frames+2-remaining-frames=2
最後合成的字串 "Frame 2 (replace)"


Step 3. 對Frame 2圖層,執行[影像] / 濾鏡 / 扭曲 / 波浪【註3】,其於使用預設的參數。使用波浪濾鏡,讓單一圖層產生同心圓狀的波浪扭曲。


前面的步驟,對應到下列的程式碼。
66: (plug-in-waves RUN-NONINTERACTIVE
67: image
68: waves-layer
69: amplitude
70: phase
71: wavelength
72: 0
73: FALSE)


注意!
Duplicate的譯詞是「重製」,之前的版本是「複製」。若是位於「Image」選單內,則Duplicate指令是新增影像的複本,由於GIMP給予每一張影像單一獨立的視窗,因此,會產生新的影像視窗。 Duplicate Layer的譯詞是「重製圖層」,之前的版本是「複製圖層」。此功能是新增圖層的複本,圖層的名稱的尾端會加上「複製本」。
選單及項目名稱的英文:
【註1】[Image] / Image / Duplicate
【註2】Duplicate Layer
【註3】[Image] / Filters / Distorts / Waves