5

GIMPを介してPythonで画像を保存する際に問題が発生します。画像を取得して必要な効果を適用することはできますが、保存しようとすると、すべてではなく1つのレイヤーしか保存されません(注:背景は透明です)。背景が透明であるため、それ以外のものを保存することはできません。透明な背景。私が使用しているコードは以下に掲載されています:

image_array = gimp.image_list()
i=0
for image in image_array:
    img = image_array[i]
    layers = img.layers
    last_layer = len(layers)-1
    try:
        disable=pdb.gimp_image_undo_disable(img)
        pdb.gimp_layer_add_alpha(layers[0])
        drw = pdb.gimp_image_active_drawable(img)
        pdb.plug_in_colortoalpha(img,drw,(0,0,0))
        drw = pdb.gimp_image_active_drawable(img)
        enable = pdb.gimp_image_undo_enable(img)

    except:
        print "ERROR"

    pdb.file_png_save(img, drw, "C:\\Users\\jammer\\Desktop\\test.png",
                      "test.png",0,9,1,1,1,1,1)
    i+=1

私も試しましたが、GUIを介さずに、[ファイル]- > [エクスポートfile_png_save2]をクリックしてPNGとして保存するオプションを複製したいだけなので、問題はdrwオブジェクトにあると感じています。自動的に保存したいのですが(49枚の画像があり、それぞれに自動的に名前が付けられますが、最初に1枚の画像で正しくエクスポートする必要があります)。前に述べたように、上記のコードは透明な背景のみをエクスポートし、GIFに変更しても問題は解決しません。すべてのレイヤーと透明な背景を維持したまま、ファイルをPNGとしてエクスポートするにはどうすればよいですか?

4

1 に答える 1

5

問題を見つけました!表示されているレイヤーをマージして新しいレイヤーと同じに設定していませんでした。新しいレイヤーは、画像をpngとして保存するときに「描画可能なオブジェクト」として使用しました。以下に修正コードを投稿しました:

image_array = gimp.image_list()
i=0
for image in image_array:
    img = image_array[i]
    layers = img.layers
    last_layer = len(layers)-1
    try:
        disable=pdb.gimp_image_undo_disable(img)
        pdb.gimp_layer_add_alpha(layers[0])
        drw = pdb.gimp_image_active_drawable(img)
        pdb.plug_in_colortoalpha(img,drw,(0,0,0))
        layer = pdb.gimp_image_merge_visible_layers(img, gimpfu.CLIP_TO_IMAGE)#FIXES PROBLEM OF ONLY EXPORTING TRANSPARENCY!
        enable = pdb.gimp_image_undo_enable(img)

    except:
        print "ERROR"

    pdb.file_png_save2(img, layer, "C:\\Users\\jammer\\Desktop\\test.png","test.png",1,9,1,1,1,1,1,0,1)
    i+=1
于 2013-03-19T00:07:40.687 に答える