【发布时间】:2017-11-26 01:36:39
【问题描述】:
我有一个主图像,我在 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 填写错误报告吗?
标签: gimp script-fu gimpfu python-fu