Измените фон с прозрачного на какой-нибудь цвет, используя gimp
У меня большой набор изображений. Я не хочу менять свой фон на определенный цвет. Скажем, зеленый. Все изображения имеют прозрачный фон. Есть ли способ выполнить это действие с помощью сценариев python-fu в Gimp. Или какой-то другой инструмент, доступный для выполнения этой конкретной задачи в автоматическом режиме.
2 ответа
Да, есть. Хотя этот вопрос не является точной копией, я не практично просто вводить основы создания плагина Python каждый раз, когда кто-то просит автоматизировать какую-либо задачу в GIMP
Мне придется попросить вас взглянуть на GIMP: создать стек изображений из всех файлов изображений в папке и, возможно, некоторые другие ответы, связанные с python-fu, для основ.
После того, как вы запустили простой сценарий "hello world", просто зарегистрируйте сценарий, который запрашивает строку с нужной папкой, используйте os.listdir или glob.glob в Python для извлечения путей к файлам iamge и просто проходите через них повторяющиеся звонки:
image = pdb.gimp_file_load (...)
image.new_layer(pos=1, fill_mode = FOREGROUND_FILL)
pdb.gimp_file_save(...)
pdb.gimp_image_delete(image)
Параметры для вызовов PDB легко проверить с помощью GIMP procedure browser
- изображения new_layer
метод в действительности не документирован и может заменить 3-4 вызова pdb - возможные параметры: "имя", "ширина", "высота", "смещение_x", "смещение_y",
"альфа", "pos", "opacity", "mode", "fill_mode",
все из которых являются необязательными. "pos" - позиция слоя: 0 вверху изображения. "1" будет только ниже самого верхнего слоя.
Должно быть ясно, что gimp_image_delete
call просто удалит изображение из памяти, а не файл с диска. Простая ссылка на него на стороне Python не заставит GIMP забыть об этом. Аналогично, если вы хотите взаимодействовать с любым изображением, открытым таким образом, вы должны позвонить pdb.gimp_display_new
для этого изображения.
Вы должны быть в состоянии сделать это, просто установив цвет фона на желаемый цвет, а затем просто сгладьте изображение, в результате чего все прозрачные области будут установлены на текущий цвет фона.
pdb.gimp_palette_set_background( 'green' )
image = pdb.gimp_file_load ('myImage.png')
flatLayer = pdb.gimp_image_flatten( image )
pdb.gimp_file_save( image, flatLayer, 'myFlatFile.png' , 'myFlatFile.png')