- 規律變動濾鏡的參數,是製作動畫的方法之一。
- 製作雖然費時,操作卻不會太難。
- 也就是,一直重複類似的操作操作流程,直到調整好所有的畫面效果。
- 複製 Text 圖層11次,並更名,如下圖所示。
- CCW 表示 counterclockwise 逆時鐘旋轉,表示執行[影像] / 濾鏡 / 扭曲 / Whirl and Pitch 【註1】 ,旋轉角度設正90度。
- CCW1,數字1,表示執行 Whirl and Pitch 濾鏡一次(旋轉角度設正90度)。
- 2表兩次,依此類推。
- CW 表示 clockwise 順時鐘旋轉,表示執行[影像] / 濾鏡 / 扭曲 / Whirl and Pitch 【註2】,旋轉角度設負90度。
- CW1,數字1,表示執行Whirl and Pitch濾鏡一次(旋轉角度負90度)。
- 2表兩次,依此類推。
- 選取 Background 圖層,將透明的部份填上白色。
- Background 圖層與 Text 圖層都不執行 Whirl and Pitch 濾鏡。
- (100ms) 表示畫格間的延遲時間為100 milliseconds。
- 對 CW1 圖層,執行[影像] / 濾鏡 / 扭曲 / Whirl and Pitch 【註3】 ,旋轉角度設負90度。
- 對 CCW1 圖層,執行[影像] / 濾鏡 / 扭曲 / Whirl and Pitch 【註4】,旋轉角度設正90度。
- 執行[影像] / 圖片 / 模式 / 索引色 【註5】 ,將該影像轉為索引模式。
- 執行[影像] / 檔案 / 另存新檔 【註6】 ,出現「儲存圖片」對話盒,將該圖存為 jp_whirl.gif 檔,出現「儲存為GIF」對話盒(Save as GIF)。
- 在「儲存為GIF」對話盒內,「反覆循環」要勾選,畫格間的延遲時間,可採用預設值100毫秒。
- 存檔後,再重新載入 jp_whirl.gif ,會發現 GIF 畫格命名的規則,如下圖所示。
- 執行[影像] / 濾鏡 / 動畫 / 播放 【註7】 ,啟動控制動畫播放對話盒。
- 觀看動畫的效果,若覺得不流暢,可多增加幾個圖層。
選單及項目名稱的英文:
【註1】[Image] / Filters / Distorts / Whirl and Pitch
【註2】[Image] / Filters / Distorts / Whirl and Pitch
【註3】[Image] / Filters / Distorts / Whirl and Pitch
【註4】[Image] / Filters / Distorts / Whirl and Pitch
【註5】[Image] / Image / Mode / Indexed
【註6】[Image] / File / Save as
【註7】[Image] / Filters / Animation / Animation Playback
- 接續前面的練習操作,改用 Python-Fu 自動化字體的生成流程。
- 下面的程式碼,分成三大部份:
- 首先,新增影像、新增圖層,圖層名為 Background ,此為最下方的圖層,產生一個紅圓。
- pdb.gimp_text_fontname(...) 寫上「ABC」或寫上「日本」。
- 產生順時針扭曲的圖層 CW1 ...... CW5 。產生逆時針扭曲的圖層 CCW5 ...... CCW1 。產生最上方的圖層 Text 。
# 圖片的尺寸 width = 256 height = 256 # 前景色設為黑色,背景色設為白色 black = (0, 0, 0) white = (255, 255, 255) red = (255, 0, 0) pdb.gimp_context_set_foreground(black) pdb.gimp_context_set_background(white) diameter = width * 0.8 #直徑 offx = width/2 - diameter/2 offy = height/2 - diameter/2 img = pdb.gimp_image_new(width, height, RGB) bg_layer = pdb.gimp_layer_new(img, width, height, RGBA_IMAGE, "Background", 100, NORMAL_MODE) pdb.gimp_image_add_layer(img, bg_layer, 0) pdb.gimp_display_new(img) pdb.gimp_ellipse_select(img, offx, offy, diameter, diameter, 2, TRUE, FALSE, 0) pdb.gimp_context_set_foreground(red) pdb.gimp_edit_fill(bg_layer, FOREGROUND_FILL)
string = "ABC" font_size = 72 font = "Arial" #string = "日本" #font_size = 72 #font = "Sans" text_ext = pdb.gimp_text_get_extents_fontname(string, font_size, PIXELS, font) text_width = text_ext[0] text_height= text_ext[1] text_offx = width/2 - text_width/2 text_offy = height/2 - text_height/2 pdb.gimp_context_set_foreground(black) tmp_layer = pdb.gimp_text_fontname(img, bg_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)
layer_num = 5 layer_list = [] for i in range(0,layer_num): drw = pdb.gimp_layer_copy(bg_layer, TRUE) layer_list.append(drw) pdb.gimp_image_add_layer(img, layer_list[i], -1) # 產生圖層 CW1, CW2, CW3, CW4, CW5 name = "CW" + str(i+1) + "(100ms)" pdb.gimp_drawable_set_name(layer_list[i], name) # 順時針旋轉 for j in range(0,i): pdb.plug_in_whirl_pinch(img, layer_list[i], -90, 0, 1) # layer_list[0] 為 CW1 旋轉 1 次 # i = 0 迴圈會執行 1 次 layer_list = [] for k in range(0,layer_num): i = layer_num - k -1 drw = pdb.gimp_layer_copy(bg_layer, TRUE) layer_list.append(drw) pdb.gimp_image_add_layer(img, layer_list[k], -1) # 產生圖層 CCW5, CW4, CW3, CW2, CW1 name = "CCW" + str(i+1) + "(100ms)" pdb.gimp_drawable_set_name(layer_list[k], name) # 逆時針旋轉 for j in range(0,i): pdb.plug_in_whirl_pinch(img, layer_list[k], 90, 0, 1) # layer_list[0] 為 CCW5 旋轉 5 次 # i = layer_num - k -1 = 5 - 0 -1 = 4 # i = 4 迴圈會執行 5 次 # 產生最上方的圖層 Text drw = pdb.gimp_layer_copy(bg_layer, TRUE) pdb.gimp_image_add_layer(img, drw, -1) name = "Text"+ "(100ms)" pdb.gimp_drawable_set_name(drw, name)
- 把上面的程式碼,貼到 GIMP Python Console 提示符號 >>> 之後。
- 而後,可以將檔案存為 GIF 檔。
- 下圖 GIF 動畫的延遲時間是 100 ms 。