4

PDB のドキュメンテーション/命名規則は、Python を gimp で使用しようとしていて、理解するのが難しい場合、かなり逆になっています。最終的にgimp.GroupLayer(PDBリストgimp-layer-group-new)を見つけて、新しいレイヤーグループを作成しました。これを画像に挿入し、レイヤー グループとして表示するにはどうすればよいでしょうか。

私はこのようなものを試してきました:

img = gimp.image_list()[0]
gl = gimp.GroupLayer(img, "Should be a folder", 1, 1, 0)
img.insert_layer(gl)

私を本当に混乱させる最初のことは、他の実際のレイヤーのコンテナーとして機能する必要があるにもかかわらず、GroupLayer の高さと幅を指定することを期待していることです (から継承するため、これを期待していますLayerが、それは別の問題です)。

本当の問題は、新しく作成した を挿入するGroupLayerと、通常のレイヤー (レイヤー アイコンにフォルダーがない) として表示されることです。1 つは通常のレイヤー、もう 1 つはグループ レイヤーの 2 つのレイヤーを作成して、これを確認しました。グループ レイヤーを画像に追加し、グループ レイヤーを親として通常レイヤーを画像に追加します。

img = gimp.image_list()[0]
gl = gimp.GroupLayer(img, "Group Layer", 1, 1, 0)
l = gimp.Layer(img, "Real Layer", 1, 1, 0)
img.insert_layer(gl)
img.insert_layer(l, gl) # gl should be the parent

私が得るのはエラーだけです:

Calling error for procedure 'gimp-image-insert-layer':
Item 'group layer #1' (34) cannot be used because it is not a group item`

他の誰かがこれを理解しましたか?

アップデート

ジョアン・ソ・ブエノ

gimp-git でこの問題を修正しました。Frgom gimp 2.8.12 では、gimp.GroupLayer を
呼び出すと gimp.GroupLayer(img, [name="", opacity=100.0, mode=gimp.NORMAL_MODE]) 署名が機能します。

4

1 に答える 1

3

gimp.GroupLayerの作成にはバグがあるようです。Pythonではオブジェクトタイプがグループレイヤーとして表示されていても、通常のレイヤーとして動作します。

PDBを介してワーキンググループレイヤーを作成することは可能ですがpdb.gimp_layer_group_new(img)、今回は別のバグであり、オブジェクトはPythonではnromal Layerオブジェクトとして表示されますが、イメージに挿入すると pdb.gimp_image_insert_layer(image, layer, <parent (use None for top level)>, <position>)正しく機能します(画像の「layer」属性を介してオブジェクトを取得すると、適切なGroupLayerオブジェクトが得られます)。

申し訳ありませんが、そのほとんどは私のせいです。次のGIMP2.8で動作を修正できるかどうかを確認します。GIMP2.8は、Pythonからのレイヤーグループをまったくサポートせずにほぼ出荷されています。

更新:GIMP 2.8.12以降、gimp.GroupLayer(image、...)を呼び出すと適切なレイヤーグループが作成されます。

于 2012-09-26T20:31:08.897 に答える