Как объединить несколько изображений 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)