4

私はGIMP用のpythonプラグインを書いています。プラグインは画像を操作しますが、元に戻すスタックは、プラグインが行ったことを実際には元に戻しません。

このコンテキストで元に戻すにはどうすればよいですか?

たとえば、以下は RGBA イメージの最初のタイルを透明に設定します。元に戻すスタックには「例」と「[ベース イメージ]」が表示されますが、ベース イメージに切り替えても透明度は元に戻りません。

#!/usr/bin/env python
from gimpfu import *
import struct

def do_python_fu_example(img, layer):

    pdb.gimp_undo_push_group_start(img)

    # example: set the first tile to completely transparent
    tile = layer.get_tile(False, 0, 0)
    for y in xrange(tile.eheight):
        for x in xrange(tile.ewidth):
            pixel = struct.unpack("BBBB",tile[x,y])
            pixel = struct.pack("BBBB", pixel[0], pixel[1], pixel[2], 0)
            tile[x,y] = pixel

    pdb.gimp_undo_push_group_end(img)

    layer.update(0,0,layer.width,layer.height)
    layer.flush()
# end do_swap

register(
    "python_fu_example",
    "Example",
    "Example",
    "Example",
    "Example",
    "2016",
    "Example...",
    "RGBA",      # Alternately use RGB, RGB*, GRAY*, INDEXED etc.
    [
        (PF_IMAGE, "img", "Input image", None),
        (PF_DRAWABLE, "layer", "Input layer", None),
    ],
    [],
    do_python_fu_example, menu="<Image>/Colors")

main()
4

0 に答える 0