如何以编程方式替换 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 构建新图像,使用其中一些层加上新的文本图像(或直接渲染的文本)会简单得多.