我的问题:
我想制作大量不同于三个文本图层的图像。我已经想到了如何使用Python-Fu控制台进行文本更改。我的下一步是将此文本更改代码放入循环并添加png.file-save-png(...)
以保存图片。为了保存为PNG,我必须合并我的所有图层(对于每个图像),这对single_layer = pdb.gimp-image-merge-visible-layers(image,0)
没有问题。为了继续在这里工作,我需要撤消,以恢复我的旧图层。
我是否需要从脚本中应用GIMP中的UNDO操作?
我找不到任何关于此功能的提示。也许有人知道如何做到这一点,或者有一个解决方法。
答案 0 :(得分:3)
我为循环中的每张卡重新打开了基本图像文件,其中所有图层和文本图层都保持不变。这使我无法撤消。
顺便说一句,这是我创建4 * 13张扑克牌的脚本(来自自己的base_card.xcf):
basefile = "/home/[...]/base_card.xcf"
basesave = "/home/[...]/"
color_blue = [ (32.0 /255.0, 74.0/255.0,135.0/255.0,1.0),
(52.0 /255.0,101.0/255.0,164.0/255.0,1.0)]
color_red = [ (164.0/255.0, 0.0/255.0, 0.0/255.0,1.0),
(204.0/255.0, 0.0/255.0, 0.0/255.0,1.0)]
color_yellow = [ (196.0/255.0,160.0/255.0, 0.0/255.0,1.0),
(237.0/255.0,212.0/255.0, 0.0/255.0,1.0)]
color_green = [ ( 78.0/255.0,154.0/255.0, 6.0/255.0,1.0),
(115.0/255.0,210.0/255.0, 22.0/255.0,1.0)]
def createCard(color_list, color_name, number):
pdb.gimp_context_set_foreground(color_list[1])
image = pdb.gimp_file_load(basefile, basefile)
textlayers = image.layers[0:3]
for layer in textlayers:
pdb.gimp_text_layer_set_text(layer, number)
pdb.gimp_text_layer_set_color(layer, color_list[0])
layer = image.layers[3]
pdb.gimp_edit_bucket_fill(layer, 0, 0, 100, 0, 0, 30, 30)
layer = pdb.gimp_image_merge_visible_layers(image, 0)
savename = "%s%s_%s.png" % (basesave, color_name, number)
pdb.file_png_save(image, layer, savename, savename, 0, 0, 0, 0, 0, 0, 0)
image = None
for c in range(1,14):
createCard(color_blue, "BLUE", c)
for c in range(1,14):
createCard(color_yellow, "YELLOW", c)
for c in range(1,14):
createCard(color_red, "RED", c)
for c in range(1,14):
createCard(color_green, "GREEN", c)