GIMPのPython-Fuで複数のPNGファイルをレイヤーとして追加しXCF形式で一括保存する

GIMP コンピュータ
GIMP

複数のPNGファイルをGIMPで加工する状況で、PNGからXCF形式に一括で変換します。
その場合別フォルダの同名pngファイルをレイヤーとして追加することが出来ます。
このスクリプトは以前にも作成していますが、今回は追加レイヤー用画像ファイルが存在する場合のみレイヤーの追加するルーチンと、レイヤー名をセットするルーチンを追加しています。

#!/usr/bin/env python
# coding: utf8

import os, glob

path = 'ディレクトリ'
base_dir = os.path.join(path, "ベースディレクトリ")
layer_dir = os.path.join(path, "レイヤーディレクトリ1")
layer_dir2 = os.path.join(path, "レイヤーディレクトリ2")
outdir = os.path.join(path, "xcf")
if not os.path.exists(outdir):
    os.mkdir(outdir)

for src_file in glob.glob(os.path.join(base_dir, "*.png")):
    img = pdb.gimp_file_load(src_file, src_file)
    disp = pdb.gimp_display_new(img)
    pdb.gimp_layer_add_alpha(img.active_layer)
    pdb.gimp_item_set_name(img.active_layer, "レイヤー名0")
    
    layer_path = os.path.join(layer_dir, os.path.basename(src_file))
    if os.path.exists(layer_path):
        layer = pdb.gimp_file_load_layer(img,layer_path)
        pdb.gimp_item_set_name(layer, "レイヤー名1")
        pdb.gimp_layer_add_alpha(layer)
        img.add_layer(layer, 1)
    
    layer_path2 = os.path.join(layer_dir2, os.path.basename(src_file))
    if os.path.exists(layer_path2):
        layer2 = pdb.gimp_file_load_layer(img,layer_path2)
        pdb.gimp_item_set_name(layer2, "レイヤー名2")
        pdb.gimp_layer_add_alpha(layer2)
        img.add_layer(layer2, 1)
    
    dst_file = os.path.join(outdir, (os.path.splitext(os.path.basename(src_file))[0]+'.xcf'))
    pdb.gimp_file_save(img, img.active_layer, dst_file, dst_file)
    pdb.gimp_display_delete(disp)

コメント