混色工具,有許多種產生漸層的方法,有些並不常用,我使用螺旋(逆時針)與圓錐形(對稱)來產生這個動畫。
- 新增256x256影像。
- 在混色工具的選項面版內 【註1】 ,「形狀」項目設為螺旋(逆時針)(選單中的最後一個選項)。
- 使用混色工具,從圖形的中心點向外拉一小條直線,線段的長度決定螺紋的疏密。
- 執行[影像] / 色彩 / 界限值 【註2】 ,將旋轉式的漸層圖案變為黑白兩色的圖案。
- 執行[影像] / 濾鏡 / 模糊化 / 高斯模糊 【註3】 ,模糊半徑設2。
- Conical 圖層與 Spiral 圖層以濾色混合模式,重疊顯示,讓 Spiral 圖層左上角有發光的感覺。
- 調整 Conical 圖層的「透明度」,可改變左上角有發光的亮度。
- 請注意,在圖層面版內Opacity 譯為「透明度」,但 Opacity 卻代表「不透明、不通透」的意思。
- 合併 Conical 圖層與 Spiral 圖層,將影像剪裁成圓形,此時圖層名稱為 Spiral 。
- 重複上述動作,改變製作圓錐狀的漸層所拉的直線的角度,產生不同的發光角度。
- 也可複製多個相同的 Spiral 圖層(合併後的),使用旋轉工具來轉動圖案。
- 此動畫總共有八個圖層。
- 最下方的圖層要作為Background 圖層,是最先播放的圖層,將此圖層塗上橘色的底色。
- 執行[影像] / 圖片 / 模式 / 索引色 【註5】 ,將該影像轉為索引模式。
- 執行[影像] / 檔案 / 另存新檔 【註6】 ,出現「儲存圖片」對話盒,將該圖存為 spiral_anim.gif 檔,出現「儲存為GIF」對話盒(Save as GIF)。
- 在「儲存為GIF」對話盒內,「反覆循環」要勾選,畫格間的延遲時間可採用預設值100毫秒。
- 存檔後,再重新載入spiral_anim.gif。
- 會發現 GIF 畫格命名的規則,如下圖所示。
選單及項目名稱的英文:
【註1】Shape設Spiral (ccw)
【註2】[Image] / Colors / Threshold
【註3】[Image] / Filters / Blur / Gaussian Blur,Blur Radius設2
【註4】Shape設Conical(sym)
【註5】[Image] / Image / Mode / Indexed
【註6】[Image] / File / Save as
- 接續前面的練習操作,改用 Python-Fu 自動化動畫的生成流程。
- 下面的程式碼,分成四大部份:
- 首先,準備好新的影像,與所需的圖層。
- 產生螺紋的漸層,產生圓錐狀的漸層
- 改變角度,做出8畫格的動畫。若不包含背景,只需再做出7個畫格。
- 儲存為 GIF,再載入此檔案。
# Part 1. # 圖片的尺寸 width = 256 height = 256 img = pdb.gimp_image_new(width, height, RGB) bg_layer = pdb.gimp_layer_new(img, width, height, RGB_IMAGE, "Background", 100, NORMAL_MODE) pdb.gimp_image_add_layer(img, bg_layer, 0) # 底圖為橘色 orange = (252, 138, 5) pdb.gimp_context_set_background(orange) pdb.gimp_edit_fill(bg_layer, BACKGROUND_FILL) # 將放置螺紋的圖案 spiral_layer = pdb.gimp_layer_copy(bg_layer, TRUE) pdb.gimp_image_add_layer(img, spiral_layer, -1) pdb.gimp_drawable_set_name(spiral_layer, "Spiral") # 將放置圓錐狀的圖案 conical_layer = pdb.gimp_layer_copy(bg_layer, TRUE) pdb.gimp_image_add_layer(img, conical_layer, -1) pdb.gimp_drawable_set_name(conical_layer, "Conical") pdb.gimp_display_new(img)
# Part 2. center_x = width / 2 center_y = height / 2 start_x = center_x start_y = center_y # 前景色設為黑色,背景色設為白色 black = (0, 0, 0) white = (255, 255, 255) pdb.gimp_context_set_foreground(black) pdb.gimp_context_set_background(white) # 從圖形的中心點,向外拉一小條直線,線段的長度,決定螺紋的疏密 pdb.gimp_blend(spiral_layer, FG_BG_RGB_MODE, NORMAL_MODE, GRADIENT_SPIRAL_ANTICLOCKWISE, 100, 0, REPEAT_TRIANGULAR, FALSE, FALSE, 0, 0, 0, start_x, start_y, start_x + 8, start_y + 8) pdb.gimp_threshold(spiral_layer, 127, 255) # 從圖形的中心點,向右下角拉一條直線,產生圓錐狀的漸層 pdb.gimp_blend(conical_layer, FG_BG_RGB_MODE, NORMAL_MODE, GRADIENT_CONICAL_SYMMETRIC, 100, 0, REPEAT_NONE, FALSE, FALSE, 0, 0, 0, start_x, start_y, width - 1 , height - 1) # 剪裁成圓形 pdb.gimp_ellipse_select(img, 0, 0, width - 1, height -1 , CHANNEL_OP_REPLACE, FALSE, FALSE, 0) pdb.gimp_selection_shrink(img, 10) pdb.gimp_selection_invert(img) pdb.gimp_edit_clear(conical_layer) pdb.gimp_edit_clear(spiral_layer) pdb.gimp_selection_none(img) opacity = 70 pdb.gimp_layer_set_opacity(conical_layer, opacity) pdb.gimp_layer_set_mode(conical_layer, SCREEN_MODE)
# Part 3. layer_num = 7 layer_list = [] for i in range(0,layer_num): spiral_tmp = pdb.gimp_layer_copy(spiral_layer, TRUE) pdb.gimp_image_add_layer(img, spiral_tmp, -1) drw_tmp = pdb.gimp_layer_copy(conical_layer, TRUE) layer_list.append(drw_tmp) pdb.gimp_image_add_layer(img, layer_list[i], -1) pdb.gimp_layer_set_mode(layer_list[i], SCREEN_MODE) angle = [0, -45, -90, -135, -180, -225, -270, -315] drw_tmp = pdb.gimp_drawable_transform_rotate_default(layer_list[i], angle[i], FALSE, center_x, center_y, INTERPOLATION_NONE, TRANSFORM_RESIZE_ADJUST) layer_list[i] = pdb.gimp_image_merge_down(img, drw_tmp, EXPAND_AS_NECESSARY) # 產生圖層 Conical1, ... , Conical7 name = "Conical" + str(i+1) + "(100ms)" pdb.gimp_drawable_set_name(layer_list[i], name) pdb.gimp_image_remove_layer(img, conical_layer) bg_layer = pdb.gimp_image_merge_down(img, spiral_layer, EXPAND_AS_NECESSARY) name = "Background" pdb.gimp_drawable_set_name(bg_layer, name)
# Part 4. pdb.gimp_convert_indexed(img, NO_DITHER, MAKE_PALETTE, 255, FALSE, FALSE, 0) gif_file = "/tmp/spiral_anim.gif" pdb.file_gif_save(img, bg_layer, gif_file, "", FALSE, TRUE, 100, 0) img_gif = pdb.file_gif_load(gif_file, "") pdb.gimp_display_new(img_gif)
- 啟動 GIMP Python Console
- 將前面的程式碼,依次序,全部選取、複製、再貼到 Python Console 提示符號 >>> 之後,按下 Enter 。
- 過一會,就會看到結果圖,與其圖層結構。
- 確定你也是在 Linux 環境下,有 /tmp 目錄。
- 前往 /tmp 目錄,就會看到螺紋旋轉的動畫檔,其視效,如下圖所示。
- 下圖是螺紋旋轉動畫 GIF 圖檔的圖層結構。