python-fuを使用していますが、あるレイヤーに追加したフィルターiwarpを、ドキュメントに追加したばかりの別のレイヤーにコピーしたいと思います。
私のコード:
document = gimp.image_list()[0]
layer_with_filter = document.layers[0]
layer_without_filter = document.layers[3]
私は使用を見る方法を見つけられません:
dir(layer_with_filter)
そのレイヤーにエフェクトまたはフィルターが追加されている場合、それを知ることは可能ですか、それともフィルターによる変更はどこかで発生しますか?
ありがとう
いいえ、それは不可能です。
Pythonを介して、Python側に設定した任意の値でほぼすべてのフィルターを実行できます。ただし、GIMPに以前の値でフィルターを繰り返すように指示したり、Python側のフィルター操作で使用された値を取得したりする方法はありません。
I-Warpは、プラグインウィンドウとのライブインタラクションに依存して歪みマップを作成するため、プログラムで使用することもできません。運が悪かったのです。
しかし、「iWARPの」プラグインを使用して行うことができます任意のものは、「ディスプレイス」プラグイン(チェックを行うことができるFilters->Map->Displace...
1であること)でありますプログラムで使用でき、Pythonを使用して変位の1つのアプリケーションの効果を他のレイヤーに適用できます。ただし、「変位」には、元の画像の各ピクセルに使用されるオフセットを示す2つの中間レイヤーが必要です。これらの2つのレイヤーは、2Dフィールドとして結合されます。ここで、各ピクセルの値(〜その明るさ)は、ターゲットピクセルが配置されるオフセットの1つの座標を示します。内部的には、これがIWarpが行うことですが、ディスプレイスメントマップ自体は、拡大、縮小、移動などの「内部ツール」によって作成されます。IWarpが使用するディスプレイスメントマップをプログラムで取得して取得する方法はありません。エアーに貼り付けて、ディスプレイスメントフィルターと一緒に使用できます。しかし、本当にこの機能が必要な場合は、それが最も簡単な方法かもしれません:のソースコード(C)を変更しますIWarpフィルターを使用して、「ディスプレイスメントマップを保存」するボタンを追加します。これにより、ディスプレイスメントフィルターでの使用に適した2つの新しいレイヤーを作成できます。
プログラムで他のフィルターを繰り返すというテーマに戻ります。GIMPの開発部門であるGIMP2.9は、ほとんどのフィルターを、GIMPのすべてのピクセル操作用の新しいエンジンであるGEGL(Generic Graphic Library)を使用して完全に新しいフレームワークに切り替えました。ただし、Pythonバインディングは、これらの新しいフィルターを利用できるようにまだ更新されていませんでした。最終的にそれらが存在する場合、最後に使用された値を取得するための呼び出しが存在する可能性があります。
また、IWarpのために特別に、フィルターは開発バージョンで完全にインタラクティブなツールに昇格されており、ツールと1つのレイヤーとの相互作用の結果を取得して、他のレイヤーでそれを「再生」するメカニズムはありません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加