[Part I. GIMP基礎功]

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

21.2 scm 檔的存放位置與 Script-Fu 的功用簡介

.gimp-2.6 目錄與 scripts 目錄
  • 第一次啟動 GIMP 程式時,GIMP程式會在「用戶的根目錄」,也稱為家目錄,產生「.gimp-2.6」的隱藏目錄,儲存與GIMP相關的資料。
  • 「.gimp-2.6」目錄之下,還有許多子目錄,起始時,這些目錄都是空的,沒有檔案。
    • brushes 目錄,儲存用戶所製作的筆刷檔案。
    • patterns 目錄,儲存用戶所繪製的圖樣檔案。
    • scripts 目錄,儲存用戶所撰寫的命令稿檔案。
  • 也可從網路搜集與下載筆刷、圖樣、命令稿......。


GIMP 的目錄,以 Windows XP 為例
  • GIMP 程式安裝目錄:C:\Program Files\GIMP-2.0\
  • GIMP 用戶目錄:C:\Documents and Settings\user_name\.gimp-2.6\
  • 對於 Windows 用戶,第一次啟動 GIMP 程式時,GIMP 程式會產生目錄「.gimp-2.6」。
  • 在 MS Windows 裡,點號不代表「隱藏目錄」


程式安裝目錄
  • GIMP 程式的安裝目錄之下,也有一些子目錄,用來儲存 GIMP 程式既有的 brush 檔案、pattern 檔案、script-fu 檔案、plug-in 檔案......。
  • 子目錄,如下圖所示。



用戶專屬目錄
  • 目錄「.gimp-2.6」如下圖所示,此用戶的名稱就是「user」。

  • 目錄「.gimp-2.6」內的資料夾與設定檔,如下圖所示。



參考別人的Script-Fu程式
  • 在撰寫自己所需的 Script-Fu 程式之前,可以先複製一個 Script-Fu 程式,先研究 Script-Fu 程式的運作。
  • 也可以使用既有的 Script-Fu 程式,作為參考與修改的範本。
  • 在22.1節,會需要到「C:\Program Files\GIMP-2.0\share\gimp\2.0\scripts\」目錄之下,複製一份 news-text.scm,貼到「.gimp-2.6\scripts」目錄之下
  • 學習 Script-Fu 的最好方法,就是閱讀 scripts 目錄下的 scm 檔,scripts 目錄下有超過100個 scm 檔。


Script-Fu主要分兩類:
  • 有一類的Script-Fu,是作用在既有的影像與圖層,例如,「[影像] / 濾鏡 / 動畫 / Waves」,讓單一圖層變為多圖層的波浪動畫。
  • 另一類的Script-Fu,是在「[影像] / 檔案 / 建立」選單內,執行後,產生一個新的影像視窗,顯示結果。例如,下圖的Comic Book字體效果。


以 Comic Book 漫畫書風格的字體為例
  • 下圖是 GIMP 2.6.5版的擷圖,2.6.7版將 Create 譯為「建立」
  • 下圖是,Comic Book 所在的位置。

  • 下圖是,執行 Comic Book,使用預設參數值所得到的字體。


彌補文字工具的不足
  • GIMP 的文字工具只提供了字型與顏色的參數。
  • 「[影像] / 檔案 / 建立 / Logos」選單內,有許多文字效果,可彌補文字工具的功能不足。
  • 這些 Script-Fu 程式產生的文字效果,很多都用了陰影效果。
  • Comic Book 字體雖沒有陰影效果,但有邊框效果。
  • 陰影、亮邊、發光、邊框的效果,一直都是字體特效變化中常用的技巧。
  • 因此,若仔細研究字體效果的 Script-Fu,會發現很多程式碼撰寫的方式雷同。


組合GIMP處理影像的動作
  • GIMP 的 Script-Fu 就好像 UNIX 的 Shell Script 。
    • Script-Fu 所使用的語言是 Scheme,一種類似 Lisp 的語言。
    • 透過 Script-Fu 的 Scheme 語言,可以組合GIMP處理影像的動作,達到想要的功能,讓這些處理影像的操作自動完成。

  • 使用 GIMP 的視窗介面,處理影像的動作,都有對應的函數。
    • 執行[影像] / 求助 / Procedure Browser【註1】,產生 Procedure Browser 對話盒。
    • 這對話盒提供了 GIMP 所有函數的輸入變數的資料型態、輸出變數的資料型態、該函數的功能......相關資訊。
    • 例如,gimp-edit-copy、gimp-edit-paste、gimp-edit-cut對應的便是最常使用的影像複製、影像貼上、影像剪下的動作。

  • 在 GIMP 視窗介面,選單內的 Script-Fu,也都有對應的函數。
    • 可在 Procedure Browser 對話盒內找到其對應的函數。
    • [影像] / 圖片 / 縮放圖片【註2】,這動作所對應的函數為 gimp-image-scale 。
    • [影像] / 檔案 / Create / Logos / Comic Book【註3】,這動作所對應的函數為 script-fu-comic-logo


查詢特定的函數
  • Plug-In Browser 或 Procedure Browser,都用於查詢函數的相關資料。
  • 下圖是「求助」選單。

  • 下圖是 Procedure Browser 對話盒,查詢 gimp-image-scale 的資料。


  • 下圖是,影像視窗內,「Scale Image」指令所在的位置。



Script-Fu 不是濾鏡
  • 透過雖說 Script-Fu 不是濾鏡,但「濾鏡」選單內的項目,有超過30項功能是 Script-Fu 。
  • How to write a GIMP plug-in」這篇文章沒有提到 Script-Fu ,因此可以說「Script-Fu 不是外掛」。
  • Script-Fu 不是濾鏡,這句話是有語病的,更正確的說法是, Script-Fu 不是外掛(plug-in),外掛是C語言撰寫的,外掛最終編譯為二進位碼的函式庫, Script-Fu 是純文字的命令稿,以直譯的方式來執行。


Script-Fu 不是外掛
  • Script-Fu 不是外掛,這句話好像還是有語病。管理 GIMP 外加功能、擴展功能的網站,其站名為 GIMP Plugin Registry,網站內也提供 Script-Fu 的相關資訊。
  • 雖然, Script-Fu 是直譯式的程式, GIMP 啟動時,會搜尋特定目錄,將所有的 Script-Fu 函式都予以註冊,因此 Script-Fu 函式不能同名。
  • scripts 目錄下有超過100個 *.scm 檔,這些是學習影像處理技巧的最好教材。


在GIMP的圖形操作介面, Script-Fu 分散到許多選單之中
  • 有些在面版的選單內,例如,筆刷面版的選單內,有製作筆刷的 Script-Fu 。
  • 有些在「[影像] / 濾鏡 / 動畫」選單內。
  • 有些在「[影像] / 濾鏡 / 裝飾」選單內。
  • 有些在「[影像] / 濾鏡 / Alpha to Logo」選單內。
  • 為數最多的 Script-Fu 安置在「[影像] / 檔案 / 建立」選單內。


選單及項目名稱的英文:
【註1】[Image] / Help / Procedure Browser
【註2】[Image] / Image / Scale
【註3】[Image] / File / Create / Logos / Comic Book