Как сохранить несколько модификаций слоя в одном сохранении - PullRequest
0 голосов
/ 03 октября 2019

У меня есть скрипт Python, который находит и обновляет несколько текстовых слоев в существующем файле GIMP. Я хочу сохранить весь файл как копию. Тем не менее, единственный способ найти документально подтвержденное использование pdb.gimp_xcf_save - я передаю drawable (для которого я использую текущий текстовый слой), чтобы сохранить файл как xcf. Таким образом, я повторяю этот вызов для каждого слоя, проходя через них. Это кажется расточительным и, безусловно, должен быть способ обойти это, просто сделать это одним способом, но я не смог его найти.

def dynamic_text_replace_plugin(timg, tdrawable, pathToXcf, textToReplace, saveAsJpg):
    texts = textToReplace.split('~')
    myImage = pdb.gimp_xcf_load(1, pathToXcf, pathToXcf)

    textCount = 0
    for newText in texts:
        textCount = textCount + 1
        textLabel = "TEXT" + str(textCount)
        myLayer = pdb.gimp_image_get_layer_by_name(myImage, textLabel)
        sourceText = pdb.gimp_text_layer_get_text(myLayer)
        textToReplace = sourceText.replace(textLabel, newText)
        pdb.gimp_text_layer_set_text(myLayer, textToReplace)
        # Not sure if I can do this once or if it has to be for every layer?
        saveAsPath = pathToXcf.replace(".xcf", "_replaced.xcf")
        pdb.gimp_xcf_save(1, myImage, myLayer, saveAsPath, saveAsPath)

    if (saveAsJpg):
        pathToJpg = pathToXcf.replace(".xcf", ".jpg")
        myImage.flatten()
        pdb.gimp_file_save(myImage, myImage.layers[0], pathToJpg, '?')

    # Clean up memory
    pdb.gimp_image_delete(myImage)

1 Ответ

0 голосов
/ 03 октября 2019

AFAIK параметр «drawable» игнорируется при сохранении в многослойных форматах, таких как XCF. Так что дайте ему любой слой изображения или None и сохраните только один раз:

pdb.gimp_xcf_save(0, image, None,'/tmp/foo.xcf','/tmp/foo.xcf')
...