Проект изображения с множественным выбором, экспорт в отдельные файлы

Для хобби-проекта по разработке игр я ищу способ автоматизировать следующий рабочий процесс, который может быть в любом инструменте для редактирования фотографий/изображений.

  1. загрузить изображение с высоким разрешением
  2. сделать множественный выбор
  3. дать каждому выбору имя
  4. экспортировать каждое выделение в отдельный файл PNG (с названием)
  5. экспортировать координаты выделений в текстовый файл (имя = x,y,h,w)
  6. сохранить изображение с выбранными элементами для последующего использования или реэкспорта

Короче говоря, возьмите изображение с высоким разрешением, сделайте несколько выборок, а затем экспортируйте каждую выборку в отдельный файл PNG, а также экспортируйте список координат выборок в текстовый файл. Посмотрите, что я имею в виду на макете изображения ниже:

сохранить несколько вариантов выбора для отдельных изображений и файла координат

Сейчас я делаю все эти шаги вручную, и большинство изображений состоят из 70-80 частей. Всякий раз, когда есть ошибка, обновление изображения, изменение разрешения и т. д., мне приходится переделывать большие части или даже все целиком, даже если выбор примерно одинаков.

Некоторые программы для редактирования фотографий поддерживают плагины и скрипты, и я без проблем могу делать скрипты (lua, python, javascript). Но я не знаю ни одного фоторедактора, поддерживающего сохранение нескольких вариантов . Если вы знаете хорошее решение этой проблемы в каком-либо фоторедакторе, таком как Painshop, PhotoShop, Coral Draw или программе с открытым исходным кодом, такой как Gimp или Paint Dot Net и т. д., пожалуйста, дайте мне знать.

Это твое хобби на github? потому что я нахожу это очень увлекательным. Я бы с удовольствием поиграл в эмулированную русскую версию игр Game N Watch.
Вы, вероятно, найдете это интересным en.wikipedia.org/wiki/…
@LateralTerminal Я только сейчас увидел ваш комментарий, да, есть страница github, она здесь github.com/BdR76/lcdgame.js и посмотрите папку \utils\

Ответы (4)

Но я не знаю ни одного фоторедактора, поддерживающего сохранение нескольких вариантов.

Решение для GIMP:

  • В сценарии выполните эквивалент Select>To path(используя pdb.plug_in_sel2path(image, drawable)функцию). Это создаст путь, состоящий из нескольких «штрихов», каждый из которых представляет собой замкнутую кривую, представляющую один из выбранных вами элементов (*).
  • Затем вы можете повторять штрихи в пути и для каждого штриха:
    • создать из него новый путь
    • сделать выбор из этого пути
    • создайте новый слой, содержащий только этот выбор
    • сохранить этот слой в файл
    • скопируйте смещение этого слоя в свой файл данных (обратите внимание, что, поскольку координаты точек обводки легко доступны, вы также можете вычислить центр тяжести объекта)

Некоторые примеры скриптов Gimp на Python, включая целый набор, который в основном работает с путями, см. здесь и здесь .

(*) Некоторые основы путей Gimp :

Просто для ясности: я могу выбрать каждую фигуру, использовать selection to pathдля создания целого списка pathsи переименовать каждую pathв полезное имя. Но тогда можно ли использовать сценарий custom.py для перебора всех этих путей, преобразования каждого пути обратно в выбор и сохранения его в виде файла png? Это тот подход, который вы имеете в виду?
Вроде. Я предлагаю выбрать все ваши элементы за один раз, например, закрашивая их с помощью режима быстрой маски . Но ваш подход также действителен, даже если он требует больше кликов. С точки зрения скрипта он либо повторяет несколько путей одним штрихом (ваш метод), либо повторяет штрихи одним путем (мой метод). Не большая разница. В любом случае будет менее 100 строк Python.
Хорошо, спасибо, но проблема с одним путем заключается в том, что вы не можете дать частям полезные имена (батут_1, ребенок_16, огонь_3 и т. д.). Кстати, я только что нашел скрипт, который, кажется, делает почти то, что я ищу; разделите изображение, используя пути register.gimp.org/node/27913 , так что я тоже внимательно рассмотрю это
Что ж, если вам нужно дать имя, то использование пути для каждого имеет смысл и не сильно замедлит вас. Да, сценарий Аракне может помочь (или может стать хорошим началом для вашего собственного).
К вашему сведению, я использовал советы Python в этом проекте :) github.com/BdR76/lcdgame.js/tree/master/utils

(Частичное/еще не работающее) решение для GIMP с использованием разрозненных частей («штрихов») одного выделения:

  1. Поместите сценарий GIMP от Эндрю Квальхейма в файл ~/.gimp-2.8/scripts/export-selected-regions.scm(или эквивалентное место в Windows/Mac OS X).

  2. Запустите ГИМП.

  3. Создайте свой выбор.

  4. Выберите «Выбрать → Экспортировать выбранные регионы» в меню. (Это новый пункт меню, добавленный сценарием.)

Предостережения:

  • Начиная с GIMP 2.8, этот скрипт не работал, жалуясь на «неизвестный формат изображения». Поэтому потребуется обновление, но затем предоставьте решение. Пожалуйста, отпишитесь в комментариях, когда у вас получится.

  • По сравнению с решением, основанным на путях (в других ответах здесь), это решение требует меньше кликов для определения выбора, но применимо только в том случае, если (1) вам не нужны самоопределяемые имена для ваших выходных изображений и (2) ни одна из ваших частей выделения не перекрывается (поскольку это приведет к одному объединенному «штриху» при определении выделения и, следовательно, к одному выходному изображению для этого «штриха»).

Спасибо за ответ. Однако самоопределяемые имена для каждого выходного изображения очень важны, и многие выборки перекрываются. Тем временем у меня уже было работоспособное решение, см. скрипт export_paths_to_png.py здесь github.com/BdR76/lcdgame.js/tree/master/utils

(Частичное/еще не работающее) решение для GIMP, использующее быстрый полуавтоматический процесс «выделите, сохраните как PNG, повторите»:

  1. Поместите сценарий сохранения области в файл ~/.gimp-2.8/scripts/savearea.scm(или эквивалентное место в Windows/Mac OS X).

  2. Запустите ГИМП.

  3. Перейдите в «Правка → Сочетания клавиш» и назначьте сочетание клавиш пункту меню «Файл → Область сохранения» (добавленному установленным вами скриптом). Вы можете использовать один ключ без модификатора, например /.

  4. Чтобы использовать скрипт:

    1. Сделайте выбор.
    2. Нажмите ярлык, который вы назначили, чтобы получить доступ к функции «Файл → Область сохранения» и сохраните выбор в файл.
    3. Повторите для всех вариантов, которые вы хотите сохранить.

Предостережения: последний раз скрипт обновлялся в 2007 году, поэтому, вероятно, он не будет работать в текущей версии GIMP 2.8 (хотя я его не проверял). Но это частичное решение, которое можно исправить. Также в инструкции по установке указано , что если скрипт не работает, то следует конвертировать исходные изображения в другой формат. PNG с «Изображение → Режим → RGB» кажется хорошим выбором, поскольку сценарий использует сам этот формат для сохранения выбора.

Рабочее решение у меня следующее. Выберите каждую из фигур и сохраните выделение как путь и назовите пути, например, «марио_1», «марио_2», «марио_3», «ящик_1» и т. д. Затем вы можете экспортировать все фигуры в отдельные файлы PNG с помощью export_paths_to_png.pyскрипта Python . для ГИМП. Преимущество этого заключается в том, что выборки + имена хранятся в одном файле, что удобно для архивирования, чтобы вы могли позже внести некоторые изменения, а затем просто повторно экспортировать. Еще одним преимуществом является то, что если вы измените размер всего изображения, то пути также изменятся.
Правильно, ваш лучший точно. Я добавил ответ и на это сейчас. Рассмотрим другие ответы здесь только «ради полноты» - когда-нибудь кому-нибудь может понадобиться вместо них один из них :) Ура!

(Полностью работающее) решение, разработанное автором оригинального постера @BdR и упомянутое в этом комментарии . На данный момент это самое передовое решение для GIMP, которое полностью работает в текущей версии GIMP 2.8.

  1. Поместите скрипт export_paths_to_png.py в папку ~/.gimp-2.8/plug-ins/(или аналогичное место в Windows/Mac OS X).

  2. В Linux сделайте этот скрипт исполняемым:

    chmod a+x ~/.gimp-2.8/plug-ins/export_paths_to_png.py
    
  3. В Linux заставьте сгенерированные файлы использоваться /вместо \разделителей каталогов в сценарии (строки 29 и 68 ).

  4. Запустите ГИМП.

  5. Создайте и назовите пути GIMP для каждого выбора:

    1. Создайте выделение.

    2. В диалоговом окне «Пути» нажмите «Выбор пути».

    3. Необязательно: переименуйте свой путь. Имя пути будет использоваться в качестве имени файла при сохранении.

    4. Повторите для всех ваших выборов.

  6. Нажмите «Фильтры → Пути → Экспортировать пути в PNG» (пункт меню, добавленный установленным вами скриптом), заполните диалог и нажмите «ОК».

Преимущества:

  • Полностью работает с текущим GIMP 2.8 (я проверял).
  • Вы можете сохранить все пути вместе с изображением, сохранив изображение в собственном формате GIMP .xcf. Это экономит работу, когда вам нужно внести несколько изменений и повторно экспортировать изображения позже.
  • Когда вы изменяете размер изображения, пути изменяются пропорционально, поэтому они по-прежнему «подходят».
  • Пути могут без проблем перекрываться, поэтому пиксель можно экспортировать как часть нескольких выходных изображений, где это необходимо.
  • Имена, исходные координаты и размеры всех путей также сохраняются в виде текстового файла orgcoords.jsonрядом с вашим выходным каталогом для использования с вашими собственными скриптами. Если ваши пути являются простыми выделениями с помощью GIMP «Инструмент выделения прямоугольника», вся информация о них содержится в .jsonфайле таким образом.