1

私は画像の大きなセットを持っています。背景を特定の色に変更したくありません。緑としましょう。すべての画像は背景が透明です。Gimp で python-fu スクリプトを使用してこのアクションを実行する方法はありますか。または、この特定のタスクを自動化された方法で実行するために利用できる他のツール。

4

2 に答える 2

0

はい、あります - この質問は正確な重複ではありませんが、誰かが GIMP でいくつかのタスクを自動化するように頼むたびに、Python プラグインを作成するための基本を入力するだけでは実用的ではありません

GIMP: Create image stack from all image files in folderと、おそらくその他の python-fu 関連の基本的な回答を確認するように依頼する必要があります。

簡単な "hello world" スクリプトを実行したら、目的のフォルダーに文字列を要求するスクリプトを登録し、Python の os.listdir または glob.glob を使用して iamge ファイルへのパスを取得し、それらをループします。呼び出しを繰り返す:

image = pdb.gimp_file_load (...)
image.new_layer(pos=1, fill_mode = FOREGROUND_FILL) 
pdb.gimp_file_save(...)
pdb.gimp_image_delete(image)

PDB 呼び出しのパラメーターは、GIMP のヘルプで簡単に確認できます procedure browser。画像のnew_layerメソッドは実際には文書化されておらず、3 ~ 4 個の pdb 呼び出しを置き換えることができます。可能なパラメーターは次のとおりです。「名前」、「幅」、「高さ」、 "offset_x"、"offset_y"、"alpha"、"pos"、"不透明度"、"mode"、"fill_mode"、

これらはすべてオプションです。「pos」はレイヤーの位置です。0 は画像の上部です。「1」は最上層のすぐ下になります。

gimp_image_deleteこの呼び出しは、ディスクからファイルを削除するのではなく、メモリから画像を削除するだけであることは明らかです。Python側で逆参照するだけでは、GIMPがそれを忘れることはありません。同様に、この方法で開いている画像を操作したい場合はpdb.gimp_display_new 、その画像を呼び出す必要があります。

于 2014-08-15T17:00:53.557 に答える
0

背景色を目的の色に設定し、画像を平坦化するだけでこれを達成できるはずです。これにより、すべての透明領域が現在の背景色に設定されます。

pdb.gimp_palette_set_background( 'green' )
image     = pdb.gimp_file_load ('myImage.png')
flatLayer = pdb.gimp_image_flatten( image )
pdb.gimp_file_save( image, flatLayer, 'myFlatFile.png' , 'myFlatFile.png')
于 2015-02-20T23:17:20.323 に答える