Как объединить несколько изображений PNG как слои в одно изображение XCF?

У меня есть несколько изображений PNG, которые мне нужно объединить как отдельные слои в новое изображение GIMP XCF. Мне нужно выполнять эту задачу много раз, поэтому решение на основе сценариев будет лучшим.

До сих пор я пытался поиграть с пакетным режимом GIMP, но с треском провалился.

1 ответ

Решение

Вместо script-fu, который использует Scheme, я бы порекомендовал использовать для этого привязку GIMP-Python, так как намного проще манипулировать файлами и списками.

Если вы проверите filters->Python->Console Вы перейдете в интерактивный режим - внизу будет кнопка "Обзор", которая позволит вам выбрать любую из процедур GIMP в его API и вставить ее непосредственно в эту консоль.

В качестве вызова API есть "загрузить файл как слой" - pdb.gimp_file_load_layer -

это, однако, приносит изображение в память, но не добавляйте его к изображению - вы должны позвонитьpdb.gimp_image_insert_layer впоследствии

Вы можете напечатать это непосредственно в интерактивной консоли, или проверить один из моих других связанных с GIMP ответов, или какой-нибудь ресурс по GIMP-Python в Интернете, чтобы преобразовать его в плагин, который не потребует вставки каждого кода каждый время, когда вы хотите выполнить задачу:

def open_images_as_layers(img, image_file_list):
    for image_name in image_file_list:
        layer = pdb.gimp_file_load_layer(image_name)
        pdb.gimp_image_insert_layer(img, layer, None, 0)

img = gimp.image_list()[0]
image_list = "temp1.png temp2.png temp3.png"
open_images_as_layers(img, image_list.split())

От второй до последней строки img = ... выбирает необходимую ссылку на открытое изображение в GIMP - вы также можете создать новое изображение, используя вызовы pdb, если хотите (пример ниже). Список файлов - это жестко закодированная строка, разделенная пробелами, во фрагменте выше, но вы можете создать список файлов любым из способов, разрешенных Python. Например, чтобы получить все имена файлов ".png" вc:\Documents and Settings\My user\Pictures папку, вы можете сделать:

from glob import glob
image_list = glob("c:/Documents and Settings/My user/Pictures/*png")

Чтобы создать изображение программно:

img = gimp.Image(1024, 768)
pdb.gimp_display_new(img)
Другие вопросы по тегам