This forum has been archived. All content is frozen. Please use KDE Discuss instead.

Python: Simple Highpass-like filter (some trouble)

Tags: None
(comma "," separated)
saedjubarin
Registered Member
Posts
58
Karma
0
I can't get this to do the final merge.

Code: Select all
doc = app.activeDocument()
top = doc.topLevelNodes

#refresh = doc.refreshProjection
def refresh():
    doc.refreshProjection()
    doc.waitForDone()

def action(action):
    app.action(action).trigger()

def hide():
    for node in app.activeDocument().topLevelNodes():
        node.setVisible(False)
    app.activeDocument().refreshProjection()

active = doc.activeNode
set_active = doc.setActiveNode

root = doc.rootNode()
add = root.addChildNode

w, h = doc.width(), doc.height()

layer = active()

# Duplicate inverted blur layer and receiver layer, the receiver will be called highpass because that's what we get when we finally merge it to the original layer.
add(layer.duplicate(), layer)
highpass = active()
highpass.setName("highpass")
add(layer.duplicate(), highpass)
inverted_blur = active()
inverted_blur.setName("inverted_blur")
refresh()

# Blur
gblur = app.filter("gaussian blur")
gblur_conf = gblur.configuration()
gblur_conf.setProperty("horizRadius", 50) # these are exaggerated values for debugging
gblur_conf.setProperty("vertRadius", 50)
gblur_conf.setProperty("lockAspect", True)
gblur.setConfiguration(gblur_conf)
gblur.apply(inverted_blur, 0, 0, w, h)
refresh()

# Invert
invert = app.filter("invert")
invert.apply(inverted_blur, 0, 0, w, h)
refresh()

# Apply Inverted Blur to the receiving layer, which is just a clone of the original at this point.
inverted_blur.setOpacity(128)
refresh()
hide()
inverted_blur.setVisible(True)
highpass.setVisible(True)
refresh()
action('select_visible_layers')
refresh()
action('merge_layer')
refresh()

# Now the receiving layer will become a highpass filter when used at 50% opacity in linear light mode. I guess. It'll have a cool effect anyway. Maybe this is not the scientific method though.
highpass = doc.nodeByName("highpass Merged")
refresh()
print(highpass.name())
highpass.setBlendingMode('linear light')
highpass.setOpacity(128)
refresh()
hide()
highpass.setVisible(True)
layer.setVisible(True)
refresh()
action('select_visible_layers')
refresh()
import time
time.sleep(5)
action('merge_layer')
refresh()


Bookmarks



Who is online

Registered users: Bing [Bot], claydoh, Evergrowing, Google [Bot], rblackwell