Gimp: Экспортируйте каждый слой в виде отдельного изображения в формате PNG

Я пришел к ситуации, когда у меня есть изображение в Gimp с несколькими слоями. Теперь я хочу автоматически экспортировать каждый отдельный слой в виде отдельного изображения (предпочтительно в формате PNG) в какую-нибудь папку.

Возможно ли это?

Длинный метод: Скрыть все слои, кроме одного, обрезать нужный раздел, экспортировать изображение. Скрыть сохраненный слой, показать другой, обрезать раздел, экспортировать. Повторять. Довольно громоздко для изображения, содержащего около 20 слоев.

Если PNG является приемлемым форматом вывода, одним из вариантов является экспорт его в виде открытого растра (.ora), открытой спецификации для файлов многослойных изображений.

  1. Экспорт изображения в виде открытого растра (.ora)

    File> - Export As ...

    myfile.ora

  2. Открыть myfile.ora в виде архива, с помощью такой программы, как file-roller или 7zip.

    На Ubuntu:

    $ file-roller myfile.ora$ # note, later version of file-roller on ubuntu hard-code file suffixes,   # and refuse to open ".ora" files, work around by renaming the file to ".zip"$ ln -s myfile.ora myfile.ora.zip$ file-roller myfile.ora.zip

    альтернативно

    $ unzip myfile.ora

    Все ваши слои будут изображениями в формате png под /data, Извлеките их и используйте по своему усмотрению.

Вы также можете попробовать этот плагин позволяет экспортировать слои. Я протестировал его в формате png, и это сработало. Вы просто выбираете папку и формат, и вы получаете все слои там, каждый в своем собственном файле.

Во-первых, вам не нужен никакой плагин. Даже вам не нужно ничего обрезать. Несколько простых шагов.

  1. Выберите слой. Чтобы сделать это, просто нажмите на этот конкретный слой.
  2. Скопируйте слой в буфер обмена с помощью Ctrl+C
  3. Теперь создайте новое изображение, используя Ctrl+Shift+V

Это оно. Теперь вы можете просто экспортировать этот слой в любой формат.

  1. Воспользуйся Shift+Ctrl+E

Можно было бы экспортируйте изображение в виде анимированного GIF-файла. Это позволит сохранить каждый слой в виде отдельного кадра в GIF.

Затем, команда ImageMagick convert -coalesce ./myfile.gif outfile%05d.png будет извлекать кадры в виде изображений в формате PNG.

Конечно, эта работа для плагина Экспорт слоев в файл.

Особенности:

  • Манипулируйте слоями в группе слоев.
  • Экспортируйте тексты, шаблоны и фильтры слоев.
  • Необходимо указать префиксное имя для файлов изображений.
  • Экспорт только в JPG, png, бмп форматы, но необходимые форматы могут быть добавлены легко.

Я думаю, вы можете попытаться найти что-нибудь с ImageMagick : apt-get install imagemagick.Похоже, он способен обрабатывать формат XCF, и вы можете экспортировать слой в формате png, используя [N] в команде, где N - уровень вашего слоя.

Источник : http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&amp ;t=17603

ImageMagick Читает Моды : http://www.imagemagick.org/Usage/files/#read_mods

Самое лучшее в ответе 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)

Я делал то же самое и пытался загрузить плагины, упомянутые в ответах. Поскольку веб-сайт Gimp в настоящее время не работает, я не смог получить плагины, и мне пришлось найти другое решение.

В итоге я воспользовался программой для создания скриншотов Затвор, который позволяет вам выбрать область экрана, а затем вы можете повторить тот же снимок экрана этой области всего 1 щелчком мыши. Таким образом, это становится операцией в 2 клика на слой: скрыть слой, снимок экрана, скрыть следующий слой, снимок экрана, ...

Намного быстрее, чем все остальное, что я мог придумать, и на 20 слоев уходит меньше минуты. Вы можете потерять качество изображения, хотя в моем случае это не было проблемой.

В качестве альтернативного подхода к моему предыдущему предложению на основе сценариев я наконец обнаружил, что вы также можете сделать это с помощью одного из доступных инструментов, если у вас установлен GIMP GAP. (Это анимация Gimp... Посылка? Плагин? Что-то в этом роде.)

Это немного скрыто в лес из опций меню GAP, но выбор меню "Видео" позволяет разделить изображение на кадры..." сделает это, сохранив каждый слой в виде отдельного файла. В любом формате, который вы укажете (через расширение файла), и с несколькими вариантами обработки слоев. Вот диалоговое окно, которое появилось, когда я выбрал этот вариант после сохранения неоптимизированного анимированного GIF-файла в виде 52-слойного /tmp/testfile.xcf:

Split Image into Frames dialog window

Несмотря на предварительный просмотр имени файла, кадры были сохранены как /tmp/testfile_01.png через /tmp/testfile_52.png, как указано. (Он не обновляет отображаемую строку в ответ на ваши выборы, но выполняет их.)

Часть, пожалуйста, подумайте о том, чтобы принять ответ от @ThorSummoner Gimp: Export every layer as a separate PNG image - Ask Ubuntu поскольку это кажется гораздо лучшим решением для новых людей, которые находят этот ответ сегодня без установки плагина.