2018/02/02(金) [n年前の日記]
#1 [gimp][python] GIMPのScript-fuスクリプトをPython-fuで書き直し中
昨日 github にアップロードした Script-fu を、Python-fu で書き直し中。
Script-fu をいくつか書いてきたものの、lisp系はどうも分からん…。分からんから、なかなか改造・改良のしようがない…。せめて Python で書いてあれば、もうちょっとサクサクと改良できるのではないか。と思えてきたので、この際書き直そうと。
気のせいかもしれないけれど、Script-fu (TinyScheme)で処理するより、Python-fu で処理するほうがなんとなく体感的に処理が速いような気がする。いや、気のせいだと思うけど。たぶん気のせい。
Script-fu をいくつか書いてきたものの、lisp系はどうも分からん…。分からんから、なかなか改造・改良のしようがない…。せめて Python で書いてあれば、もうちょっとサクサクと改良できるのではないか。と思えてきたので、この際書き直そうと。
気のせいかもしれないけれど、Script-fu (TinyScheme)で処理するより、Python-fu で処理するほうがなんとなく体感的に処理が速いような気がする。いや、気のせいだと思うけど。たぶん気のせい。
◎ 選択範囲の中で矩形塗り潰し。 :
せっかくだから、Python-fu に書き直すついでに、各矩形内に描画するパターンの種類も増やそうとしているのだけど。既に選択範囲がある状態で、その中で矩形塗り潰しをするには、どんなスクリプトを書いたらいいのやら。GIMPに矩形塗り潰し機能があれば楽なのだけど、ちょっと見つからない感じで。
現在の選択範囲をどこかに記憶しておいてから、新たに矩形の選択範囲を作って、塗り潰しをして、先ほど記憶しておいた以前の選択範囲を再設定…するしかないのかな。選択範囲はチャンネルに保存・読み出しができるけど、使い終わったチャンネルを削除する命令が見つからない…。いや、コレかな…。たぶんコレだろう…。
もっと上手い方法がありそうな気もする。
現在の選択範囲をどこかに記憶しておいてから、新たに矩形の選択範囲を作って、塗り潰しをして、先ほど記憶しておいた以前の選択範囲を再設定…するしかないのかな。選択範囲はチャンネルに保存・読み出しができるけど、使い終わったチャンネルを削除する命令が見つからない…。いや、コレかな…。たぶんコレだろう…。
>>> # python-fu を使う際のお約束 >>> from gimpfu import * >>> # 画像を取得 >>> image = gimp.image_list()[0] >>> image <gimp.Image '[名称未設定]'> >>> # レイヤーを作成・追加 >>> layer = gimp.Layer(image, "Layer Name", image.width, image.height, RGBA_IMAGE, 100, NORMAL_MODE) >>> image.add_layer(layer, 0) >>> # 矩形の選択範囲を作成。x,y,w,hを指定 >>> pdb.gimp_image_select_rectangle(image, 2, 16, 32, 256, 512) >>> # 選択範囲をチャンネルに保存 >>> channel = pdb.gimp_selection_save(image) >>> channel <gimp.Channel '選択マスク コピー'> >>> # 矩形の選択範囲を作成。 >>> pdb.gimp_image_select_rectangle(image, 2, 24, 48, 128, 256) >>> # 描画色を指定。python-fuの場合、0.0 - 1.0 で指定 >>> gimp.set_foreground(1.0, 0.5, 0.0) >>> # 塗り潰し >>> pdb.gimp_edit_fill(layer, FOREGROUND_FILL) >>> # 選択範囲解除 >>> pdb.gimp_selection_none(image) >>> # 選択範囲をチャンネルから読み出す >>> pdb.gimp_selection_load(channel) >>> # チャンネルを削除 >>> pdb.gimp_image_remove_channel(image, channel)
もっと上手い方法がありそうな気もする。
[ ツッコむ ]
以上です。