如何以编程方式替换 Gimp 图像中的文本
How to replace text in Gimp image programatically
如标题 - 假设有一些包含许多层的 Gimp .xcf 文件。这些层的一部分包含文本。有没有我可以将 .xcf 文件导出到的格式,它以某种方式保留 'human readable' 文本?
最终目标是处理该文本并将其再次放入文件中,我知道这听起来很不寻常,但也许你们中的一些人知道如何实现这样的场景。
我做了一些研究,发现我可以将图像导出为 .psd 格式,然后使用 NPM 包处理该图像并提取文本。这只是部分解决了问题,因为我不知道如何将处理后的文本放回到这个 .psd 文件中(除非我反编译这个 NPM 包并尝试自己编写一些实现...)
非常感谢任何解决方案和替代方案
您可以编写 Gimp 脚本(使用 Scheme 或 Python)。从技术上讲,您不能更改图层中的文本(没有 API),但您可以恢复文本图层的特征(原始文本、字体类型、字体大小...)并重新创建一个新图层与一个新的文本。这是一些 Python 恢复文本信息的代码:
def text_info(img,layer):
parasites=None
try:
parasites=layer.parasite_list()
except Exception as e:
pass;
if parasites and 'gimp-text-layer' in parasites:
data=layer.parasite_find('gimp-text-layer').data
pdb.gimp_message('Text layer "%s": %s' % (layer.name,data))
else:
pdb.gimp_message('No text information found for layer "%s"' % layer.name)
(此信息仅存在于文件已保存的情况下,在新创建的图层上不可用,但这在您的情况下应该不是问题)
当然如果文字本身是一个普通的位图层就不行了,你必须猜测字体类型和大小(但有时上面的代码仍然可以恢复文字信息)
但是如果你的 XCF 结构简单,那么将它分解成单独的图像并使用 ImageMagick 构建新图像,使用其中一些层加上新的文本图像(或直接渲染的文本)会简单得多.
如标题 - 假设有一些包含许多层的 Gimp .xcf 文件。这些层的一部分包含文本。有没有我可以将 .xcf 文件导出到的格式,它以某种方式保留 'human readable' 文本?
最终目标是处理该文本并将其再次放入文件中,我知道这听起来很不寻常,但也许你们中的一些人知道如何实现这样的场景。
我做了一些研究,发现我可以将图像导出为 .psd 格式,然后使用 NPM 包处理该图像并提取文本。这只是部分解决了问题,因为我不知道如何将处理后的文本放回到这个 .psd 文件中(除非我反编译这个 NPM 包并尝试自己编写一些实现...)
非常感谢任何解决方案和替代方案
您可以编写 Gimp 脚本(使用 Scheme 或 Python)。从技术上讲,您不能更改图层中的文本(没有 API),但您可以恢复文本图层的特征(原始文本、字体类型、字体大小...)并重新创建一个新图层与一个新的文本。这是一些 Python 恢复文本信息的代码:
def text_info(img,layer):
parasites=None
try:
parasites=layer.parasite_list()
except Exception as e:
pass;
if parasites and 'gimp-text-layer' in parasites:
data=layer.parasite_find('gimp-text-layer').data
pdb.gimp_message('Text layer "%s": %s' % (layer.name,data))
else:
pdb.gimp_message('No text information found for layer "%s"' % layer.name)
(此信息仅存在于文件已保存的情况下,在新创建的图层上不可用,但这在您的情况下应该不是问题)
当然如果文字本身是一个普通的位图层就不行了,你必须猜测字体类型和大小(但有时上面的代码仍然可以恢复文字信息)
但是如果你的 XCF 结构简单,那么将它分解成单独的图像并使用 ImageMagick 构建新图像,使用其中一些层加上新的文本图像(或直接渲染的文本)会简单得多.