我有一个主图像,我在 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 命令为其中一个图层检索正确的字体,但不为其他图层检索正确的字体。它似乎没有保留斜体等,我不希望它保留文本是否带下划线。
第三种选择是在字体中硬编码。我需要浏览所有文本字段,弄清楚字体参数是什么,并为每个参数硬编码。然后,如果我重新设计主文件(我会做很多),我必须重复这个过程。这不应该是必要的。