- 不同之處:
- pdb.gimp_image_list(...) 回傳值為影像的 id
- pdb.gimp.image_list() 回傳值為影像的 reference
- 使用時機:
- Python-Fu 雖然也可以取得物件的 id ,但使用函數時,例如,pdb.gimp_display_new(img),參數 img 其型態,並不是物件的 id ,而是物件的 reference 。
- 因此,Python-Fu 雖然有 pdb.gimp_image_list(...) ,但幾乎用不到,而是使用 pdb.gimp.image_list()
- Python-Fu 的 pdb.gimp_image_list(...) 相當於 Script-Fu 的 (gimp-image-list ...)
- Python-Fu 的 pdb.gimp.image_list() ,你可以說,在 Script-Fu 之中,它沒有對應的函數,也可以說,它的對應函數還是 (gimp-image-list ...)
- 雖然, Python-Fu 的函數與 Script-Fu 的函數 ,除了底線 _ 與減號 - 的差異,名稱幾乎相同。
- 但是,使用時,要注意,函數的傳入值型態,「影像 id」與「影像 reference」是有本質上的差別。
- Script-Fu 用物件的 id , 控制物件的操作, id 為流水號,從 1 開始編號 。
- Python-Fu 用物件的 reference , 控制物件的操作。
- Python 的變數名稱,就代表了物件的 reference 。
- Python-Fu 之中,要取得影像視窗的控制權,不能透過影像 id ,而是要透過影像物件的 reference 。
img_array = gimp.image_list()
img = img_array[0]
drw = pdb.gimp_image_get_active_layer(img)
- gimp.image_list() 回傳一個 list ,內含目前所有的影像物件的 reference 。
- img = img_array[0] 將最新的影像物件的 reference 儲存在 img 變數。
- 如果你無法體會「物件 id」與「物件 reference」的差別,你可能要在 C 語言的指標與物件導向程式的語法多下點功夫。