«Не со скриптом-фу». Но Python подходит для ваших нужд. Это простой сценарий - основная логика должна быть 4 линии или около того, поэтому я просто пишу это здесь для вас:
#!/usr/bin/python
# -*- coding: utf-8 -*-
from gimpfu import *
import os
def load_images_in_dir(image, drw, path):
for filename in os.listdir(path):
try:
if filename.lower().split(".")[-1] in ("png", "jpg"):
#import pdb as debug; debug.set_trace()
image_id, layer_ids = pdb.gimp_file_load_layers(image,
os.path.join(path, filename))
for id in layer_ids:
new_layer = gimp.Item.from_id(id)
pdb.gimp_image_add_layer(image, new_layer, 0)
except Exception, error:
print error
register(
"open_images_in_dir",
"Open all files in a directory",
"Open all files in a directory",
"Joao S. O. Bueno",
"Joao S. O. Bueno",
"2012. Creative Commons Citation Needed license",
"Open Images in Dir as Layers...",
"*",
[(PF_IMAGE, "image", "the image", None),
(PF_DRAWABLE, "drw", "the drawable", None),
(PF_DIRNAME,"path", "Directory to Open", "."),],
[],
load_images_in_dir,
menu="<Image>/File/")
main()
Обратите внимание, что вторая часть коды просто шаблонная для регистрации функции. Действительно - вызов «gimp_file_load_layers» не работает должным образом - поскольку он возвращает список объектов «id», которые не должны казаться из Python, но вызов метода «Item.from_id» позволяет обходить это неудобство. Это доступно только в gimp-2.8, хотя
Чтобы заставить это работать в gimp 2.6, вам придётся приступить к открытию файла в новом изображении, и они скопируют слой (ы) на ваш целевой образ.
Скопируйте сценарий выше в каталог плагинов GIMP (например, в * nix, ~/.gimp-2.8/plug-ins, или - в папке GIMP для подключаемого модуля) папка) - и отметьте его как исполняемый файл.