Effects

Effects are image transforms applied to memes via the pipe operator or composition.

Usage

// Pipe a meme through an effect
@blank "Hello" |> sepia => "sepia.png";

// Chain multiple effects
@blank "Vintage" |> sepia |> vignette |> blur(2) => "vintage.png";

// Compose effects into a reusable transform
var retro = sepia >> vignette >> noise(0.05);
@blank "Retro" |> retro => "retro.png";

Non-Parameterized Effects

These take a meme directly and return a transformed meme.

EffectDescription
grayscaleConvert to grayscale
sepiaWarm sepia tone
invertInvert all colors
sharpenSharpen edges
vignetteDarken edges
@blank "Test" |> grayscale => "gray.png";

Parameterized Effects

These take a numeric argument and return a function that transforms a meme.

EffectParameterDescription
blur(radius)1-20Gaussian blur
pixelate(blockSize)2-50Pixelation
noise(amount)0.0-1.0Random noise overlay
saturate(factor)0.0-5.0Color saturation (1.0 = normal)
contrast(factor)0.0-5.0Contrast (1.0 = normal)
brightness(factor)0.0-3.0Brightness (1.0 = normal)
hueShift(degrees)0-360Rotate hue
glow(radius)1-20Bloom/glow effect
posterize(levels)2-32Reduce color levels
chromatic(offset)1-20RGB channel displacement
threshold(level)0-255Black/white binarization
tint(hexColor)hex stringColor tint overlay
jpeg(quality)1-100JPEG compression artifacts
@blank "Blurry" |> blur(5) => "blurred.png";
@blank "Warm" |> tint("#FF880044") => "tinted.png";

Named Effects

Define reusable effect compositions with the effect keyword.

effect deepfry = saturate(3.0) >> contrast(2.0) >> jpeg(10) >> noise(0.1);
effect lofi = grayscale >> noise(0.08) >> vignette;

@blank "Deep Fried" |> deepfry => "fried.png";
@blank "Lo-Fi" |> lofi => "lofi.png";

Effect Composition

Use >> to compose effects into a pipeline.

var dramatic = contrast(1.5) >> saturate(1.3) >> vignette;
var subtle = blur(1) >> brightness(1.1);

// Composed effects can be further composed
var full = dramatic >> subtle;

See Also