2015/02/14(土) [n年前の日記]
#3 [cg_tools] GIMPのScript-fuコンソール上で実験する時のアレコレをメモ
GIMPのスクリプト ―― Script-fuを書く際に、Script-fuコンソールを立ち上げて、どのコマンド(?)がどんな動きをするか確認する時があるのですけど。その確認手順を忘れてしまってググり直したりしたので、一応少しだけメモ。
コマンド名は、ある程度、規則に従って決められてる。
コマンドの中には、パラメーター・引数として、
画像IDの他に、レイヤーIDも存在する。レイヤーの一つ一つに番号が割り当てられてる。レイヤーに対して何かしたいときは、レイヤーIDを指定して、「このレイヤーIDのレイヤーに○○をせよ」と命令していく、みたいな。
- Script-fuコンソールは、メニュー → フィルター → Script-fu → Script-fuコンソール、で起動。
- Script-fuコンソールの「参照」ボタンを押すと、呼び出せるコマンドの一覧 ―― Script-fuプロシージャブラウザーが表示される。
- Script-fuプロシージャブラウザーで、コマンド名?の一部を打ち込めば、コマンド名の絞り込みができる。
- コマンドを選んで「適用」を押せば、Script-fuコンソールの入力欄にコマンドがコピペされる。
コマンド名は、ある程度、規則に従って決められてる。
- 「get」とついてるのは、何かの情報を取得するコマンド。
- 「layer」とついてるのは、レイヤーに関係するコマンド。
- 「layers」とついてるのは、レイヤー群に関係するコマンド。
- 「selection」とついてるのは、選択範囲に関係するコマンド。
コマンドの中には、パラメーター・引数として、
image IMAGE The imageを要求するものがあるけれど、これは画像IDを指定する。画像IDってのは、現在 GIMP で開いてる画像の一つ一つに割り当てられた管理(?)番号。
画像IDの他に、レイヤーIDも存在する。レイヤーの一つ一つに番号が割り当てられてる。レイヤーに対して何かしたいときは、レイヤーIDを指定して、「このレイヤーIDのレイヤーに○○をせよ」と命令していく、みたいな。
◎ 実践。 :
例えば、今現在、GIMP で画像を1枚だけ開いてるとする。レイヤーは4枚ほど持ってる。
今現在 GIMP で開いてる画像の枚数と、画像IDの一覧を取得したい。画像に対する処理だから、名前に image が入ってそう。Script-fuプロシージャブラウザーに、「image」と打って検索してみる。
(gimp-image-list) てのがあった。これじゃないかな。
Script-fuプロシージャブラウザーで、gimp-image-list を選んで「適用」ボタンを押す。 Script-fuコンソールの入力欄に、(gimp-image-list) とコピペされた。入力欄にカーソルを合わせてから、Enterキーを押してみる。下のような結果が得られた。
毎回コマンドを確認するたびに画像IDを打ち込み直すのは面倒なので、グローバル変数 image に画像IDを指定しておく。コンソールの入力欄に、(define image 1) と打ち込んでEnter。
レイヤーの一覧を取得したい。たくさんのレイヤーに対するソレだから、名前に layers が入ってそう。検索してみる。
(gimp-image-get-layers image) てのが、なんだかソレっぽいな。
レイヤー名を取得したい。取得するのは、たぶん「get」だろう。「get」で検索してみる。
(gimp-layer-get-name item) が、いかにもそれっぽい。
どうやら、名前を取得するコマンドは、「get-name」とついてるっぽい。検索したら、画像名だのレイヤー名だのを取得するコマンドが表示された。
レイヤー名を変更してみる。レイヤーに関する処理だから、layer ってついてそう。あるいは、取得じゃなくて指定だから、get の反対、set ってついてそう。検索。
(gimp-layer-set-name item name) じゃないかな。item にはレイヤーIDを、name には変更レイヤー名を指定する。
と、そんな感じで、「たぶん getナントカじゃねえかなあ」「おそらく layerナントカっぽいな」と想像しながら検索欄に打ち込んでみて、リストアップされたコマンドを眺めて「たぶんコレだろ」と当たりをつけて、そのコマンドの動作を確認しながら Script-fu を書いてたりしますですよ。とメモ。
そのうちまた忘れそう。頻繁に Script-fu を書いてるわけでもないし。
今現在 GIMP で開いてる画像の枚数と、画像IDの一覧を取得したい。画像に対する処理だから、名前に image が入ってそう。Script-fuプロシージャブラウザーに、「image」と打って検索してみる。
(gimp-image-list) てのがあった。これじゃないかな。
Script-fuプロシージャブラウザーで、gimp-image-list を選んで「適用」ボタンを押す。 Script-fuコンソールの入力欄に、(gimp-image-list) とコピペされた。入力欄にカーソルを合わせてから、Enterキーを押してみる。下のような結果が得られた。
> (gimp-image-list) (1 #(1))最初の「1」が画像枚数。次の「#(1)」が画像IDの一覧。今、GIMPは、画像ID = 1 の画像を1枚だけ開いていますよ、と分かる。
毎回コマンドを確認するたびに画像IDを打ち込み直すのは面倒なので、グローバル変数 image に画像IDを指定しておく。コンソールの入力欄に、(define image 1) と打ち込んでEnter。
> (define image 1) imageこれで、image というグローバル変数に、1を代入できた。
レイヤーの一覧を取得したい。たくさんのレイヤーに対するソレだから、名前に layers が入ってそう。検索してみる。
(gimp-image-get-layers image) てのが、なんだかソレっぽいな。
> (gimp-image-get-layers image) (4 #(5 4 3 2))レイヤーが4枚あって、レイヤーID?が、2〜5まで割り当てられてるよ、と分かる。
レイヤー名を取得したい。取得するのは、たぶん「get」だろう。「get」で検索してみる。
(gimp-layer-get-name item) が、いかにもそれっぽい。
> (gimp-layer-get-name 5) ("レイヤー #2") > (gimp-layer-get-name 4) ("レイヤー #1") > (gimp-layer-get-name 3) ("レイヤー") > (gimp-layer-get-name 2) ("背景")レイヤー名が取得できた。
どうやら、名前を取得するコマンドは、「get-name」とついてるっぽい。検索したら、画像名だのレイヤー名だのを取得するコマンドが表示された。
レイヤー名を変更してみる。レイヤーに関する処理だから、layer ってついてそう。あるいは、取得じゃなくて指定だから、get の反対、set ってついてそう。検索。
(gimp-layer-set-name item name) じゃないかな。item にはレイヤーIDを、name には変更レイヤー名を指定する。
> (gimp-layer-set-name 5 "hogefuga") (#t)レイヤーID = 5 のレイヤー名を、「hogefuga」にしてみた。処理が成功したので「(#t)」が返ってきた。GIMPウインドウ内を眺めると、一番上のレイヤーの名前が「hogefuga」になってる。たしかにレイヤー名を変更できた。
と、そんな感じで、「たぶん getナントカじゃねえかなあ」「おそらく layerナントカっぽいな」と想像しながら検索欄に打ち込んでみて、リストアップされたコマンドを眺めて「たぶんコレだろ」と当たりをつけて、そのコマンドの動作を確認しながら Script-fu を書いてたりしますですよ。とメモ。
そのうちまた忘れそう。頻繁に Script-fu を書いてるわけでもないし。
この記事へのツッコミ
[ ツッコミを読む(2) | ツッコむ ]
以上です。
次へ進むことが出来て感謝します。