У меня есть мастер-изображение, которое я редактирую в Gimp, чтобы получить желаемый внешний вид. Затем я хочу использовать скрипт Python для создания набора новых изображений с измененным текстом (на нескольких разных слоях). Я хотел бы оставить шрифт, размер, выделение курсивом или нет и т. д. в покое.
Я успешно изменил текст в своем пакетном скрипте с помощью этой функции:
pdb.gimp_text_layer_set_text(layer, text)
Проблема в том, что это также перезаписывает шрифт и другие параметры текста, которые я выбрал в мастер-файле. Есть ли способ изменить только текст и оставить шрифт в покое?
В качестве альтернативы, более неуклюжим способом было бы попытаться сохранить все важное о шрифте до изменения и попытаться применить его повторно. Это то, что я пробовал:
# Find the text layer
text1_layer = filter(lambda x: x.name == 'text1', im.layers)[0]
# Save the font
font = pdb.gimp_text_layer_get_font(text1_layer)
font_size, font_unit = pdb.gimp_text_layer_get_font_size(text1_layer)
# Set the text
pdb.gimp_text_layer_set_text(text1_layer, tex1_text)
# Restore the font
pdb.gimp_text_layer_set_font(text1_layer, font)
pdb.gimp_text_layer_set_font_size(text1_layer, font_size, font_unit)
К сожалению, это не работает последовательно. Похоже, что команды get_font и get_font_size получают правильный шрифт для одного из слоев, но не для других. Кажется, что он не сохраняет курсив и т. д., и я бы не ожидал, что он сохранится независимо от того, подчеркнут ли текст.
Третий вариант — жестко запрограммировать шрифт. Мне нужно было бы просмотреть все текстовые поля, выяснить, каковы параметры шрифта, и жестко закодировать их для каждого из них. Затем, если я переделаю мастер-файл (что я буду делать часто), мне придется повторить процесс. Это не должно быть необходимо.
pdb.gimp_text_layer_set_text
. Не могли бы вы заполнить отчет об ошибке для этого на bugzilla.gnome.org/page .cgi?id=browse.html&product=GIMP ? - person jsbueno   schedule 23.06.2017