GIMP / Python プログラミング
この問題は解決まで数時間かかりましたので、ちょっとメモをしておきます。 やろうと思ったことは、あるレイヤーから既存のマスクを一旦削除して、別のレイヤーのマスクをコピーして、削除したレイヤーの代わりに、コピーしたマスクを追加しようとしました。…
Linux の場合、pip でなにかライブラリーをインストールしようとすると次のようなエラーメッセージが出て、インストールできません。 システムインストールした Python に numpy をインストールしようとすると... 基本的にオプションのライブラリはシステム…
GIMP プラグインのプログラミングをやっていて、いまプラグインがあるディレクトリを取得したい場合があります。この場合、Python の標準ライブラリ os にある、os.path.dirname(__file__) メソッドを入れると、今走らせているプラグインがあるディレクトリ…
GIMP プラグインの UI プログラミングを行なっていて、ダイアログ上のラベルで、途中で改行折り返し表示をさせようと思いました。この場合通常は以下のように行います。 strings = "message \n displayed." label = Gtk.Label(label=strings) 上の場合、あら…
GIMP3 で動く Python3 プラグインを作成するのに、オプションのライブラリが使えるかどうか、という問題があります。例えば numpy などは使いたい場合が多いのではないでしょうか? そもそも Unix 系ではシステムインストールされている Python にオプション…
前回、自作プラグインを国際化するためにもうちょっと簡単な方法はないかという話を書きました。そのためには、GIMP の UI 言語を取得しなければなりません。しかし、GIMP の UI 言語を直接取得する API が見つかりません。 どうも、GIMP の OS ライブラリを…
現在までに公表されている、GIMP3 用 Python スクリプト作成ガイドには、スクリプトの国際化 (多言語対応) については、ほぼ何も言及されていません。 ただ、 国際化するなら、def do_set_i18n (self, name) というユーザ定義関数を用意しておいてね、という…
GIMP 2.10 時代に、今選択されているレイヤーを取得する API コマンドとして、 pdb.gimp_image_get_active_layer() というものがありました。ところが、GIMP3 では、レファレンスで、Gimp.Image を見てもそれっぽいものが見当たりません。 lazka.github.io …
ここのところ私が作成した GIMP のプラグインの解説で知覚的色空間とリニア色空間という用語が出てきます。詳しい話は下記の記事を見ていただきたいのですが... yasuo-ssi.hatenablog.com ここでは簡単に説明を行っておきます。 まず、人間の視覚は物理的な…
先日書いたように、GIMP プラグインプログラミングで画像のピクセル値を操作するには、基本的には、Gimp.Drawable.curves_spline() メソッドを使うようです。 yasuo-ssi.hatenablog.com で、この間シグモイド・カーブ プラグインを書いていて気になることが…
このサンプルプログラムは UI 上で与えたパラメータに応じて、UI (ダイアログ) 上にグラフを書くものです。cairo という2次元のベクトル画像を描く Gtk のライブラリを使っています。 サンプルプログラムのダウンロードはこちらから。 このサンプルプログラ…
GIMP3 の Python UI プログラミング サンプルファイルの第3弾です。今回はスライダーですが、単なるスライダーではありません。インターアクティブ (対話型、相互作用型) に動くスライダーで、ちょっと高度です。 インターアクティブとは、UI を動かすとその…
今回は GIMP3 上でピクセル値計算処理を行う場合に非常に重要な問題を扱います。 以前に書いたように、GIMP で基本的に計算が行われる色空間はリニア RGB です。 yasuo-ssi.hatenablog.com しかし、UI 上での表示は TRC がかかった知覚的 RGB (sRGB)となって…
今回GIMP3 / Python プラグインのサンプルプログラムとして、画像計算機 (image arithmetic) を作成してみました。以前書きましたが、GIMP で画像の数値計算を行う場合、基本的には Gimp.Drawable の curves_spline メソッドを使うようです。 yasuo-ssi.hate…
GIMP3 の Python UI プログラミング サンプルファイルの第2弾です。今回はコンボボックスです。テキストボックス風ですが、右端をクリックすると、下に下がった選択肢を表示しその中から選べるようにする UI です。 ダウンロードはこちらから。 このサンプル…
GIMP3 になって Python プログラミングの方法が大きく変わっています。特に、UI の作り方が大幅に変わっており、UI を作る自由度は上がっているのですが、一方で非常に複雑化しています。多分ここで戸惑う方は非常に多いのではないかと思います。 そのためプ…
今回、相対 RGB 色マスク作成ツール GIMP3 プラグイン版を公開しましたが、非破壊編集が使えないので、その代わりに色々レイヤー操作を行う必要が出てきました。ここで Python を使ったレイヤー操作の基本についてまとめておきたいと思います。 ・何らかの方…
GIMP プラグイン開発のためプログラムを書いていて、ピクセルの値を操作したい場合があります。そのような場合どうすればよいのでしょうか? まず端的に Gimp.Drawable に set_pixel というメソッドがあります。 -------------------- set_pixel(x_coord, y_…
GIMP の Python プラグインを開発する際に、プログラムの実行を一時止めるプログラムを考えました。 以下のコードをコピーして、gimp_debug.py という名前で保存します。 -------------- #!/usr/bin/env python3 import gi gi.require_version('Gimp', '3.0'…
GIMP のプログラミングにおいて、レイヤーの順番を変更したい場合があります。この場合はどうしたら良いのでしょうか? 今、image という名のイメージオブジェクトがあり、その中に含まれるレイヤーを以下のコマンドで取得したとします。 layers = image.get_…
gimp3 で新設された (?)、GIMP 特有の非破壊フィルターの情報に関するドキュメントは一切ないようなので、どうやらそれに関する情報を得るにはソースコードを見るしかないようです。そこで、先日の gimp:threshold のソースコードはどこにあるのかを探してみ…
GIMP のメニューに [しきい値] というフィルターモジュールがあります。 しきい値モジュール このフィルターは以下にあるように一定の閾値で画像を黒と白に転換するモジュールです。 しきい値モジュールを適用した結果 これを適用すると、以下のレイヤーダイ…
先日 Gegl オペレーションの一覧について記事を書きましたが、GIMP3 の UI 上から Gegl フィルターブラウザを使えるようにすることを教えてもらいました。 このツールは、Kamil Burda さんという方が作成した Batcher というプラグインを導入すると使えるよ…
Chat GPTなどの生成 AI のプログラミングへの有用性が指摘されています。この手の AI ツール あまり信用していないのですが、しかし、GIMP3 用のプログラミングに苦しむ中で、活用を考えざるを得ません。 使ってみた結果ですが、既存のソースコードを解読す…
ようやく GIMP3 の Python プログラミングの要領が少しずつ分かってきましたが、今のところ本格的なダイアログボックスの作成についてちゃんと理解できていません。2.10 の gimp-fu 依存時代は、Register 関数で簡単に (ただしあまり凝ったことはできません…
先日 Chuck Henrich 氏が作成した GIMP3 用 Python プラグインのコードの解読を試みましたが、その中でガウスぼかしを実行する GEGL フィルターを使っていました。 この GEGL フィルターにはどんなものがあるのか、その一覧は下記に掲載されていました。 geg…
ハンガリーの Chuck Henrich 氏による GIMP 用 Python プラグイン: Frequency separation plug-in の GIMP3 版が公開されています。 discuss.pixls.us このプラグインは、元の画像からテクスチャー部分と、カラー & トーン部分を分離してレイヤーグループに…
何とか、ある程度 GIMP3 用プラグインを Python で書けるようになりましたが、まだよく分かっていないのが ダイアログなどの UI (GUI) をどの様に作ったら良いのかということです。 一応、Gimp Developers サイトには、C で UI を書く方法は載っているのです…
先日の記事で、GIMP3 の Python プログラミングにおいて、PDB Pricedure の呼び出しはできないことはないが、コードが面倒になるという話を書きました。 それですが、"Beginning GIMP: From Novice to Professional" の著者の Akkana Peck 氏の GIMP3 用 Pyt…
GIMP3 の Python プログラミングについてですが、色指定をする場合、2.10 では基本的に 8 bit の RGB 値で指定することが多かったと思います。例えば (255, 255, 255) というような形です。ところでは 3.0 では原則、Gegl.color 値で指定することになったよ…