【问题标题】:Gimp (Scheme) How do you return a variable from a script?Gimp (Scheme) 如何从脚本中返回变量?
【发布时间】:2017-07-22 22:31:12
【问题描述】:

看起来很简单,但我还没有找到答案。

自定义脚本。如何返回变量?

具体来说,我想返回copiedLayer。

(define (script-copy-first-layer inImg)
    (let* 
        ( 
            (layers       (cadr (gimp-image-get-layers inImg) ) )
            (numLayers    (car (gimp-image-get-layers inImg) ) )
            (layer        (aref layers 0))

            (copiedLayer (car (gimp-layer-copy layer TRUE)))
        )

        (gimp-image-add-layer inImg copiedLayer 0)
        (gimp-layer-set-visible copiedLayer TRUE)

        (gimp-layer-set-lock-alpha copiedLayer TRUE)
        (gimp-layer-add-alpha copiedLayer)      
    )
)

(script-fu-register
    "script-copy-first-layer"
    "<Image>/Image/Copy First Layer"
    "Copy First Layer"
    "Black Orchid Studios"
    "Black Orchid Studios"
    "July 2017"
    "RGB*, GRAY*"
    SF-IMAGE    "Image" 0
)

【问题讨论】:

    标签: scheme layer gimp


    【解决方案1】:

    只需将copiedLayer 添加到let 语句的末尾即可。

    我相信这是你需要的:

    (define (script-copy-first-layer inImg)
        (let* 
            ( 
                (layers       (cadr (gimp-image-get-layers inImg) ) )
                (numLayers    (car (gimp-image-get-layers inImg) ) )
                (layer        (aref layers 0))
    
                (copiedLayer (car (gimp-layer-copy layer TRUE)))
            )
    
            (gimp-image-add-layer inImg copiedLayer 0)
            (gimp-layer-set-visible copiedLayer TRUE)
    
            (gimp-layer-set-lock-alpha copiedLayer TRUE)
            (gimp-layer-add-alpha copiedLayer)    
    
            copiedLayer
        )
    )
    
    (script-fu-register
        "script-copy-first-layer"
        "<Image>/Image/Copy First Layer"
        "Copy First Layer"
        "Black Orchid Studios"
        "Black Orchid Studios"
        "July 2017"
        "RGB*, GRAY*"
        SF-IMAGE    "Image" 0
    )
    

    【讨论】:

    • 你能准确地说明它的去向吗?有几个地方可能是声明的“结尾”。另外,我需要括号吗?
    • 用那个编辑了答案。不,如果你在它周围加上括号,我相信编译器会尝试将它作为函数调用,这可能会产生错误。
    • 谢谢!现在,当我在另一个脚本中使用 let 语句时,我可以分配一个变量。 (let* ( (layerCopy (script-copy-first-layer image)) )
    • 太好了,很高兴我能帮上忙!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-18
    • 2021-04-02
    相关资源
    最近更新 更多