Измените фон с прозрачного на какой-нибудь цвет, используя 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')
Другие вопросы по тегам