Самое лучшее в ответе ThorSummoner то, что он привлек внимание к плагину экспорта OpenRaster, который, как оказалось, находится в файле file-openraster.py
в установке GIMP.
Прочитав его код (и с некоторой помощью встроенного браузера процедур), я смог определить, что слои GIMP XCF можно сохранить в отдельные PNG, перейдя в Filters > Python-fu > Console в интерфейсе и введя следующее в встроенный интерпретатор Python:
import os# If you have multiple images open, you may need to adjustimg = gimp.image_list()[0]savefn = gimp.pdb['file-png-save-defaults']outpath = "/home/$USER/Pictures" # (or r"C:\Users\$USER\Pictures", etc)for lay in img.layers: # Even if your layer names contain spaces, not a problem outname = lay.name + ".png" savefn(img, lay, os.path.join(outpath, outname), outname) # type an extra newline to exit the indented block
Вы увидите индикатор выполнения в строке состояния окна изображения, который начнет просматривать все ваши слои, записывая каждый из них в файл PNG с тем же именем, в любом каталоге, который вы указали в качестве outpath
. (Который уже должен существовать, в противном случае добавьте os.makedirs(outpath, exist_ok=True)
перед циклом.)
Если какое-либо из ваших имен слоев тот же, что является проблема, потому что это приведет к счастливой перезаписи любых ранее записанных файлов. Предостережение Гимптора.
Редактировать: Если ты делать если у вас есть слои с одинаковыми именами, вы можете легко игнорировать имена и вместо этого записывать слои в пронумерованные файлы. Просто замените последний цикл выше чем-то вроде:
for n, lay in enumerate(img.layers): outname = f"Layer {n:03}.png" savefn(img, lay, os.path.join(outpath, outname), outname)
Это запишет слои в файлы формата PNG с именами "Layer 000.png" через "Layer 999.png" (или сколько бы слоев ни было, если их меньше 1000).
Если версия Python Gimp не поддерживает f-строки (Python 3.6+), это в точности эквивалентно:
outname = "Layer {0:03}.png".format(n)