Я попал в ситуацию, когда у меня есть изображение в Gimp с несколькими слоями. Теперь я хочу автоматически экспортировать каждый отдельный слой как отдельное изображение (предпочтительно в формате PNG) в какую-нибудь папку.
Возможно ли это?
Длинный метод : скрыть все слои, кроме одного, обрезать нужный раздел, экспортировать изображение. Скрыть сохраненный слой, показать другой, обрезать раздел, экспорт. Повторение. В некотором роде громоздкое изображение с примерно 20 слоями.
Можно попробовать также этот плагин, Слои Экспорта . Я протестировал его с форматом png, и это работало. Вы просто выбираете папку и формат, и Вы получаете все слои там, каждого в его собственном файле.
Конечно, эта работа для плагина Слои Экспорта к Функциям Файла .
:
Я думаю, что можно попытаться найти что-то с ImageMagick
: apt-get install imagemagick
. Это, кажется, в состоянии обработать формат XCF, и можно экспортировать слой в png использование [N] в команде, где N является уровнем слоя.
Источник: http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=17603
Модификации Чтения ImageMagick: http://www.imagemagick.org/Usage/files/#read_mods
Я делал то же самое и пытался загрузить плагины, упомянутые в ответах. Поскольку Хромой веб-сайт в настоящее время снижается, я не мог получить плагины, и я должен был найти другое решение.
то, Что я закончил тем, что делал, было использованием программное обеспечение снимка экрана Затвор , который позволяет Вам выбирать регион экрана, и затем можно повторить тот же снимок экрана того региона всего 1 щелчком. Таким образом, это становится с 2 щелчками на операцию слоя: скройте слой, снимок экрана, скройте следующий слой, снимок экрана...
Намного быстрее, чем что-либо еще я мог придумать и занимаю меньше чем минуту для 20 слоев. Можно потерять качество изображения, хотя в моем случае это не была проблема.
Каждый мог экспортировать изображение как анимированный GIF. Это сохранит каждый слой как отдельный кадр в GIF. Затем imagemagik команда convert -coalesce ./myfile.gif outfile%05d.png
извлечет кадры как изображения PNG.
Если PNG является приемлемым выходным форматом, одна опция состоит в том, чтобы экспортировать его, как Открывают Raster (.ora), открытую спецификацию для многоуровневых файлов изображений.
Изображение Экспорта, как Открывают Raster (.ora)
Файл -> Экспорт Так же...
myfile.ora
, Открывает myfile.ora
как архив с программой как file-roller
или 7zip
.
На Ubuntu:
$ file-roller myfile.ora
(альтернативно)
$ unzip myfile.ora
Все Ваши слои будут изображениями png под /data
, Извлекать их и использовать по желанию.
В первую очередь, Вам не нужен никакой плагин. Даже Вы ничего не должны обрезать. Немного простых шагов.
Именно. Теперь можно просто экспортировать тот слой в любой формат.
Лучшее в ответе ThorSummoner то, что он привлек внимание к плагину экспорта OpenRaster, который, как оказалось, находится в файле file-openraster.py
в установке GIMP.
Прочитав его код (и с некоторой помощью встроенного браузера процедур), я смог определить, что слои GIMP XCF можно сохранить в отдельные PNG, выбрав «Фильтры» > «Python-fu» > «Консоль» в интерфейс и введите следующее во встроенный интерпретатор Python:
import os
# If you have multiple images open, you may need to adjust
img = 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, exists_ok=True)
перед циклом.)
Если какое-либо из имен ваших слоев одинаково, это является проблемой, потому что она перезапишет любые ранее записанные файлы. Предупреждение GIMPtor.
Изменить: Если у вас есть слои с одинаковыми именами, вы можете легко проигнорировать имена и вместо этого записать слои в пронумерованные файлы. Просто замените последний цикл выше чем-то вроде:
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)