GIMPが3.0へバージョンアップしたとのこと、まだRC版ですが早速試してみたいと思います。
基本的に筆者の興味がある機能を調べて記事にしています。
初めに
Webサイトからtorrentを使ってセットアップファイルをダウンロードしてインストールを行いました。
インストールするOSはWindows11になります。
起動したところ新しいロゴのスプラシュが表示されます。2.10ではこちらで各種プラグインなどの読み込みで結構待ち時間が発生しますが、3.0では待ち時間が短く感じました。これは3.0になったからなのかRC版ゆえに読み込むファイルが少ないからなのかは不明です。正式版もこれくらいの速度で起動してくれることを希望します。
UIの見た目的には、じっくり見れば沢山違いがあるのだとは思いますが、ぱっと見た感じは2.10と変わらない感じがします。
3.0への変更で操作に戸惑うことが無くて良いと思います。
パスの操作と範囲選択、前景色or背景色の塗りつぶし、選択範囲の削除など自分がよく使う操作を試した所、2.10系統同じでしたので、あとはPython-Fuのスクリプトが動いてくれれば、すぐにでも3.0に移行してもよさそうです。
追記:20241125
スタンプ機能やトーンカーブなどの加工処理を行ったところ2.10系とは少し振る舞いが異なるような感じがします。また、マウスホイールでペンのサイズを変更するように割り当てをしようと思いましたが、設定することが出来ませんでした。
まだRC版ですので、どのように変化するか見守りつつScript-Fuでスクリプトを作りながら正式リリースを待ちたいと思います。
Python Consoleの起動
メインメニュー⇒「フィルター(R)」⇒「Development」⇒「Python-Fu」⇒「Python Console」
Pythonのバージョン
起動するとpythonのバージョンがPython 3.11.10とのことです。2.10がバージョン2系と古かったので3になることで書き方が変わりそうです。ただ現行のバージョンになったことでネットでの情報が豊富な点は有難いです。
Python Consoleでdir()
>>> dir()
['Babl', 'GLib', 'GObject', 'Gdk', 'GdkPixbuf', 'Gegl', 'Gimp', 'GimpUi', 'Gio', 'Gtk', 'Pango', '__builtins__', '__console__', '__doc__', '__name__', 'builtins', 'cairo']
引数なしでdir()関数を実行したところ見慣れないオブジェクトが表示されました。
pdbオブジェクトが無く、BablやGeglなどの名前が見えるのでプロシージャを組み合わせて作るマクロというよりC言語などで作る本格的なプラグインを作ることが出来そうです。
GIMPのScript
スクリプトを見た感じそれまでのプログラミング言語の知識が全く通用しないような見た目で、ネットの情報を見ながらスクリプトを何本か作りました。今回3.0RCで試した所、arefで配列の要素の取出しに失敗しました。エラーメッセージを翻訳に掛けてみた感じ変数arefは束縛されていない(unbound)的なエラーのようです。束縛云々はおいておいてarefが変数として認識されているとなるとaref命令がそもそもないのではないかと考えられます。最終的にvector-refを使うことで要素にアクセスすることが出来ましたが、Script-Fuも2.10で作成したスクリプトをそのまま流用することは難しそうです。
ただ、Scriptフォルダ内にある標準で組み込まれたフィルターのスクリプトを見た感じ、頑張れば自分でもなんとかなる感じがします。逆にPython-Fuは今の自分には厳しい感じがします。
Script-Fu コンソールの起動
メインメニュー⇒「フィルター(R)」⇒「Development」⇒「Script-Fu」⇒「Script-Fu コンソール」
Script-Fuを対話型で試す
Script-FuはPython-Fuと異なり2.10と似たような感じです。ただプロシージャブラウザを見るとだいぶ異なるのでScript-Fuコンソールで基本事項を試してみたいと思います。
imageオブジェクトを取得
(define img (vector-ref (car ( gimp-get-images )) 0))
gimp-get-imagesで開いている画像の一覧が取得できます。こちらがvectorらしいのでvector-refで0番目の要素を参照しimg変数に代入しています。
layerオブジェクトを取得
(define layer (vector-ref (car (gimp-image-get-layers img)) 0))
アクティブなレイヤーを取得したいところですが、プロシージャが見当たらないのでimageオブジェクトからレイヤーの一覧を取得し0番目の要素を取り出しlayer変数へ代入します。
drawable(layer)を前景色で塗りつぶし
layerオブジェクトが正しく取得できたか確認するため、layerに対し前景色で塗りつぶしを行ってみます。
(gimp-drawable-edit-fill layer 0)
前景色で塗りつぶされていましたので、layerオブジェクトが取得されていることが確認できました。
とりあえずimageオブジェクトとlayerオブジェクトの取得が出来たようなので2.10でよく使っていたスクリプトを移植できるか挑戦してみたいと思います。
コメント