gpt4 book ai didi

gimp - 如何在不更改字体的情况下更改 python-fu gimp 脚本中的文本?

转载 作者:行者123 更新时间:2023-12-04 03:11:46 24 4
gpt4 key购买 nike

我有一个主图像,我在 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 命令为其中一个图层检索正确的字体,但不能为其他图层检索正确的字体。它似乎不保留斜体等,而且我不希望它保留文本是否带有下划线。

第三种选择是在字体中进行硬编码。我需要浏览所有的文本字段,找出字体参数是什么,并为每个字段对其进行硬编码。然后,如果我重新设计主文件(我会做很多),我必须重复这个过程。这不应该是必要的。

最佳答案

我做了更多的研究并找到了一个在 gimp 中对我有用的解决方案,但是,如果您从脚本中进行大量文本编辑,那么听起来您可能应该使用 gimp 以外的其他东西,例如 imagemagick。

解决方案是,当您在 gimp 编辑器中更改文本时,您需要 更改工具对话框中的字体,将其设置为图层的属性 ,而不仅仅是选择文本并更改显示的 float 字体框中的字体 - 这会更改您选择的文本的字体,但保持文本层的基本字体不变。

事实证明,gimp 文本功能很差,并且网上有很多关于此类问题的投诉。对 future 有一些希望。显然 gimp 支持文本标记语言。您可以通过以下方式获取文本标记:

pdb.gimp_text_layer_get_markup(layer)

不幸的是,没有 set_markup 函数——尽管它已经被评论和请求了 3-5 年,所以不要屏住呼吸。如果存在这样的函数,那么 get_markup 和 set_markup 函数将使脚本完全控制文本。但是,它不存在,因此如果您想更改文本片段(例如,为单词添加斜体),您必须创建单独的图层。如果所有文本的格式都相同,则可以通过脚本或编辑器对其进行编辑,只要在文本图层属性中进行设置(通过编辑器中的工具框完成,唯一可以更改字体的方法)在脚本中),那么脚本中的 set_text 函数将保持字体等。

https://bugzilla.gnome.org/show_bug.cgi?id=724101

http://gimpchat.com/viewtopic.php?f=9&t=10101&p=132782&hilit=change+text+markup#p132782

关于gimp - 如何在不更改字体的情况下更改 python-fu gimp 脚本中的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44705057/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com