Skip to content

Blur

examples/blur_example.py
import cairo
from keyed import Background, Circle, Group, Scene, Text
from keyed.compositor import BlendMode

from keyed_extras.effects import Blur, ColorAdjust, Invert

# Create the scene
scene = Scene(num_frames=60, width=800, height=800)

# Create layers
background_layer = scene.create_layer("background", z_index=0)
blurred_layer = scene.create_layer("blurred", z_index=1, blend=BlendMode.SCREEN)
foreground_layer = scene.create_layer("foreground", z_index=2, blend=BlendMode.EXCLUSION)

# Background layer
background = Background(scene, fill_color=(0.1, 0.1, 0.2))
background_layer.add(background)

# Blurred layer
circle1 = Circle(scene, radius=100, fill_color=(0.5, 0, 0), alpha=0.5)
circle2 = Circle(scene, radius=100, fill_color=(0, 0.5, 0), alpha=0.5)
circle3 = Circle(scene, radius=100, fill_color=(0, 0, 0.5), alpha=0.5)

circle1.translate(-75, -75)
circle3.translate(75, 75)
Group([circle1, circle2, circle3]).center()

blurred_layer.add(circle1, circle2, circle3)
blurred_layer.apply_effect(Blur(radius=60))
blurred_layer.apply_effect(ColorAdjust(brightness=4, contrast=2, saturation=0.5))
blurred_layer.apply_effect(Invert())

# Foreground layer
text = Text(scene, text="Blurry", size=64, weight=cairo.FONT_WEIGHT_BOLD).center()
foreground_layer.add(text)

# Animate the circles
circle1.move_to(x=scene.nx(0.65), y=scene.ny(0.625), start=0, end=30)
circle2.move_to(x=scene.nx(0.35), y=scene.ny(0.625), start=15, end=45)
circle3.move_to(x=scene.nx(0.5), y=scene.ny(0.375), start=30, end=60)