Metadata-Version: 2.4
Name: brushcue
Version: 1.4.13
Requires-Dist: ipykernel>=7.3.0
License-File: LICENSE
Summary: Python API for the BrushCue media editing platform.
Author: Dito Technologies LLC
Requires-Python: >=3.11
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Bug Tracker, https://github.com/ditotechnologies/brushcue/issues
Project-URL: Documentation, https://www.brushcue.com/docs/py
Project-URL: Homepage, https://www.brushcue.com/docs/py
Project-URL: Repository, https://github.com/ditotechnologies/brushcue

# BrushCue

![PyPI - Version](https://img.shields.io/pypi/v/brushcue) 

BrushCue is a GPU-accelerated image editing library for Python. Every operation is a composable graph node — adjust color and tone, apply filters and blurs, composite images with a full set of blend modes, transform and crop, run ML-powered segmentation, or write custom GPU shaders. Chain nodes together and call `.execute()` once to run the whole pipeline.

### Examples of things you can make

<table><tr>
<td align="center"><img src="https://www.brushcue.com/tools/swirl/animation.webp" width="180"></td>
<td align="center"><img src="https://www.brushcue.com/tools/color-reducer/animation.webp" width="180"></td>
<td align="center"><img src="https://www.brushcue.com/tools/pixelate/animation.webp" width="180"></td>
<td align="center"><img src="https://www.brushcue.com/tools/glitch-filter-animation/animation.webp" width="180"></td>
</tr></table>

## Install

```bash
pip install brushcue
```

## Documentation

The full documentation is available [here](https://www.brushcue.com/docs/py).

## Quickstart

```python
import brushcue

ctx = brushcue.Context()

image = brushcue.Composition.load("photo.png")
grayscale = image.grayscale()

composition = grayscale.execute(ctx)
output_bytes = composition.to_image_bytes(ctx)

with open("output.png", "wb") as f:
    f.write(output_bytes)
```

## Examples

The following [BrushCue tools](https://www.brushcue.com/tools) have Python examples. Browse the notebooks in [`examples/`](examples/) or open the rendered examples below to learn how to use the API.

- [16:9 Crop](https://www.brushcue.com/docs/py/examples/crop-16-9)
- [1950s Filter](https://www.brushcue.com/docs/py/examples/1950s-filter)
- [1960s Filter](https://www.brushcue.com/docs/py/examples/1960s-filter)
- [1970s Filter](https://www.brushcue.com/docs/py/examples/1970s-filter)
- [1980s Filter](https://www.brushcue.com/docs/py/examples/1980s-filter)
- [1990s Filter](https://www.brushcue.com/docs/py/examples/1990s-filter)
- [2000s Filter](https://www.brushcue.com/docs/py/examples/2000s-filter)
- [2010s Filter](https://www.brushcue.com/docs/py/examples/2010s-filter)
- [4:5 Crop](https://www.brushcue.com/docs/py/examples/crop-4-5)
- [9:16 Crop](https://www.brushcue.com/docs/py/examples/crop-9-16)
- [Add Frame](https://www.brushcue.com/docs/py/examples/add-frame)
- [Adjust Channels](https://www.brushcue.com/docs/py/examples/adjust-channels)
- [Afternoon Filter](https://www.brushcue.com/docs/py/examples/afternoon-filter)
- [Amber Plains](https://www.brushcue.com/docs/py/examples/amber-plains)
- [Auto Contrast](https://www.brushcue.com/docs/py/examples/auto-contrast)
- [Autumn Filter](https://www.brushcue.com/docs/py/examples/autumn-filter)
- [Black and White Negative Filter](https://www.brushcue.com/docs/py/examples/black-and-white-negative-filter)
- [Bloom](https://www.brushcue.com/docs/py/examples/bloom)
- [Blue Channel](https://www.brushcue.com/docs/py/examples/blue-channel)
- [Blue Hour Filter](https://www.brushcue.com/docs/py/examples/blue-hour-filter)
- [Blur Reveal Animation](https://www.brushcue.com/docs/py/examples/blur-reveal-animation)
- [Box Blur](https://www.brushcue.com/docs/py/examples/box-blur)
- [Brightness Adjust](https://www.brushcue.com/docs/py/examples/brightness-adjust)
- [Brightness Contrast Adjust](https://www.brushcue.com/docs/py/examples/brightness-contrast-adjust)
- [Camera Moving Distortion](https://www.brushcue.com/docs/py/examples/camera-moving-distortion)
- [Canopy Light](https://www.brushcue.com/docs/py/examples/canopy-light)
- [Cartoon Filter](https://www.brushcue.com/docs/py/examples/cartoon-filter)
- [Channel Mixer](https://www.brushcue.com/docs/py/examples/channel-mixer)
- [Chroma Offset](https://www.brushcue.com/docs/py/examples/chroma-offset)
- [Circle Area](https://www.brushcue.com/docs/py/examples/circle-area)
- [Circle Crop](https://www.brushcue.com/docs/py/examples/circle-crop)
- [Coachella Aesthetic](https://www.brushcue.com/docs/py/examples/coachella-aesthetic)
- [Color Gradient](https://www.brushcue.com/docs/py/examples/color-gradient)
- [Color Invert](https://www.brushcue.com/docs/py/examples/color-invert)
- [Color Rectangle](https://www.brushcue.com/docs/py/examples/color-rectangle)
- [Color Reducer](https://www.brushcue.com/docs/py/examples/color-reducer)
- [Color Threshold](https://www.brushcue.com/docs/py/examples/color-threshold)
- [Conic Gradient](https://www.brushcue.com/docs/py/examples/conic-gradient)
- [Contrast Adjust](https://www.brushcue.com/docs/py/examples/contrast-adjust)
- [Convert to BT.709](https://www.brushcue.com/docs/py/examples/convert-to-bt-709)
- [Convert to Display P3](https://www.brushcue.com/docs/py/examples/convert-to-display-p3)
- [Convert to sRGB](https://www.brushcue.com/docs/py/examples/convert-to-srgb)
- [Coquette Filter](https://www.brushcue.com/docs/py/examples/coquette-filter)
- [Cosine (Degrees)](https://www.brushcue.com/docs/py/examples/cosine-degrees)
- [Cosine (Radians)](https://www.brushcue.com/docs/py/examples/cosine-radians)
- [Cottagecore Filter](https://www.brushcue.com/docs/py/examples/cottagecore-filter)
- [Cross Process Filter](https://www.brushcue.com/docs/py/examples/cross-process-filter)
- [CRT Monitor Filter](https://www.brushcue.com/docs/py/examples/crt-monitor-filter)
- [Custom Color Shader](https://www.brushcue.com/docs/py/examples/custom-color-shader)
- [Custom Spacial Shader](https://www.brushcue.com/docs/py/examples/custom-spacial-shader)
- [Cyan Nocturne](https://www.brushcue.com/docs/py/examples/cyan-nocturne)
- [Cyberpunk Filter](https://www.brushcue.com/docs/py/examples/cyberpunk-filter)
- [Dark Academia Filter](https://www.brushcue.com/docs/py/examples/dark-academia-filter)
- [Darken](https://www.brushcue.com/docs/py/examples/darken)
- [Dawn Filter](https://www.brushcue.com/docs/py/examples/dawn-filter)
- [Degrees to Radians](https://www.brushcue.com/docs/py/examples/degrees-to-radians)
- [Desert Frame](https://www.brushcue.com/docs/py/examples/desert-frame)
- [Desert Mirage Filter Animation](https://www.brushcue.com/docs/py/examples/desert-mirage-filter)
- [Dilate](https://www.brushcue.com/docs/py/examples/dilate)
- [Dithering Effect](https://www.brushcue.com/docs/py/examples/dithering-effect)
- [Drift Animation](https://www.brushcue.com/docs/py/examples/drift-animation)
- [Duotone Effect](https://www.brushcue.com/docs/py/examples/duotone-effect)
- [Ellipse Area](https://www.brushcue.com/docs/py/examples/ellipse-area)
- [Ember Rock](https://www.brushcue.com/docs/py/examples/ember-rock)
- [Emboss](https://www.brushcue.com/docs/py/examples/emboss)
- [Erode](https://www.brushcue.com/docs/py/examples/erode)
- [Exposure Adjust](https://www.brushcue.com/docs/py/examples/exposure-adjust)
- [Fade Filter](https://www.brushcue.com/docs/py/examples/fade-filter)
- [Faded Postcard](https://www.brushcue.com/docs/py/examples/faded-postcard)
- [Film Grain](https://www.brushcue.com/docs/py/examples/film-grain)
- [Film Noir](https://www.brushcue.com/docs/py/examples/film-noir)
- [Fisheye](https://www.brushcue.com/docs/py/examples/fisheye)
- [Frost Line](https://www.brushcue.com/docs/py/examples/frost-line)
- [Gamma Adjust](https://www.brushcue.com/docs/py/examples/gamma-adjust)
- [Gaussian Blur](https://www.brushcue.com/docs/py/examples/gaussian-blur)
- [Glitch Filter Animation](https://www.brushcue.com/docs/py/examples/glitch-filter-animation)
- [Golden Hour Filter](https://www.brushcue.com/docs/py/examples/golden-hour-filter)
- [Grayscale](https://www.brushcue.com/docs/py/examples/grayscale)
- [Grayscale Gradient](https://www.brushcue.com/docs/py/examples/grayscale-gradient)
- [Green Channel](https://www.brushcue.com/docs/py/examples/green-channel)
- [Grunge Filter](https://www.brushcue.com/docs/py/examples/grunge-filter)
- [Halftone](https://www.brushcue.com/docs/py/examples/halftone)
- [High Contrast Grayscale](https://www.brushcue.com/docs/py/examples/high-contrast-grayscale)
- [Honey Hour](https://www.brushcue.com/docs/py/examples/honey-hour)
- [Horizontal Mirror](https://www.brushcue.com/docs/py/examples/horizontal-mirror)
- [Hue Adjust](https://www.brushcue.com/docs/py/examples/hue-adjust)
- [Image Resizer](https://www.brushcue.com/docs/py/examples/image-resizer)
- [Image to Video](https://www.brushcue.com/docs/py/examples/image-to-video)
- [Indie Sleaze Filter](https://www.brushcue.com/docs/py/examples/indie-sleaze-filter)
- [Kaleidoscope](https://www.brushcue.com/docs/py/examples/kaleidoscope)
- [Kaleidoscope Animation](https://www.brushcue.com/docs/py/examples/kaleidoscope-animation)
- [Kelvin Tuner](https://www.brushcue.com/docs/py/examples/kelvin-tuner)
- [Light Leak](https://www.brushcue.com/docs/py/examples/light-leak)
- [Lighten](https://www.brushcue.com/docs/py/examples/lighten)
- [Lightness Threshold](https://www.brushcue.com/docs/py/examples/lightness-threshold)
- [Linear Transform](https://www.brushcue.com/docs/py/examples/linear-transform)
- [Liquify](https://www.brushcue.com/docs/py/examples/liquify)
- [Matte Filter](https://www.brushcue.com/docs/py/examples/matte-filter)
- [Median Filter](https://www.brushcue.com/docs/py/examples/median-filter)
- [Midnight Filter](https://www.brushcue.com/docs/py/examples/midnight-filter)
- [Milk Glass](https://www.brushcue.com/docs/py/examples/milk-glass)
- [Morning Filter](https://www.brushcue.com/docs/py/examples/morning-filter)
- [Negative Filter](https://www.brushcue.com/docs/py/examples/negative-filter)
- [Noon Filter](https://www.brushcue.com/docs/py/examples/noon-filter)
- [Old Money Filter](https://www.brushcue.com/docs/py/examples/old-money-filter)
- [Opacity Scale](https://www.brushcue.com/docs/py/examples/opacity-scale)
- [Parallelogram Area](https://www.brushcue.com/docs/py/examples/parallelogram-area)
- [Peachfeed](https://www.brushcue.com/docs/py/examples/peachfeed)
- [Pencil Sketch](https://www.brushcue.com/docs/py/examples/pencil-sketch)
- [Petal Haze](https://www.brushcue.com/docs/py/examples/petal-haze)
- [Pixelate](https://www.brushcue.com/docs/py/examples/pixelate)
- [Pixelate Reveal Animation](https://www.brushcue.com/docs/py/examples/pixelate-reveal-animation)
- [Powder Blue](https://www.brushcue.com/docs/py/examples/powder-blue)
- [Pythagorean Theorem](https://www.brushcue.com/docs/py/examples/pythagorean-theorem)
- [Radial Gradient](https://www.brushcue.com/docs/py/examples/radial-gradient)
- [Radians to Degrees](https://www.brushcue.com/docs/py/examples/radians-to-degrees)
- [Rectangle Area](https://www.brushcue.com/docs/py/examples/rectangle-area)
- [Red Channel](https://www.brushcue.com/docs/py/examples/red-channel)
- [Reef Current](https://www.brushcue.com/docs/py/examples/reef-current)
- [RGB Color Mix Aesthetic](https://www.brushcue.com/docs/py/examples/rgb-color-mix-aesthetic)
- [RGB Color Shift](https://www.brushcue.com/docs/py/examples/rgb-color-shift)
- [Riviera Pop](https://www.brushcue.com/docs/py/examples/riviera-pop)
- [Rose Replay](https://www.brushcue.com/docs/py/examples/rose-replay)
- [Rose Tint](https://www.brushcue.com/docs/py/examples/rose-tint)
- [Rotate & Straighten](https://www.brushcue.com/docs/py/examples/rotate-straighten)
- [Rotate 180°](https://www.brushcue.com/docs/py/examples/rotate-180)
- [Rotate 90° Clockwise](https://www.brushcue.com/docs/py/examples/rotate-90-clockwise)
- [Rotate 90° Counter-Clockwise](https://www.brushcue.com/docs/py/examples/rotate-90-counter-clockwise)
- [Salt Flat](https://www.brushcue.com/docs/py/examples/salt-flat)
- [Saturation Adjust](https://www.brushcue.com/docs/py/examples/saturation-adjust)
- [Scale by Factor](https://www.brushcue.com/docs/py/examples/scale-by-factor)
- [Scan Lines](https://www.brushcue.com/docs/py/examples/scan-lines)
- [Sepia](https://www.brushcue.com/docs/py/examples/sepia)
- [Shadow Tint](https://www.brushcue.com/docs/py/examples/shadow-tint)
- [Sharpen](https://www.brushcue.com/docs/py/examples/sharpen)
- [Silverpine 800](https://www.brushcue.com/docs/py/examples/silverpine-800)
- [Sine (Degrees)](https://www.brushcue.com/docs/py/examples/sine-degrees)
- [Sine (Radians)](https://www.brushcue.com/docs/py/examples/sine-radians)
- [Sobel Edge Detection](https://www.brushcue.com/docs/py/examples/sobel-edge-detection)
- [Solarize](https://www.brushcue.com/docs/py/examples/solarize)
- [Solpeach 400](https://www.brushcue.com/docs/py/examples/solpeach-400)
- [Sootline Mono](https://www.brushcue.com/docs/py/examples/sootline-mono)
- [Spinning Reveal Animation](https://www.brushcue.com/docs/py/examples/spinning-reveal-animation)
- [Spring Filter](https://www.brushcue.com/docs/py/examples/spring-filter)
- [Square Area](https://www.brushcue.com/docs/py/examples/square-area)
- [Square Crop](https://www.brushcue.com/docs/py/examples/square-crop)
- [Star Cut Out](https://www.brushcue.com/docs/py/examples/star-cut-out)
- [Static Noise](https://www.brushcue.com/docs/py/examples/static-noise)
- [Summer Filter](https://www.brushcue.com/docs/py/examples/summer-filter)
- [Summit Air](https://www.brushcue.com/docs/py/examples/summit-air)
- [Sunday 76](https://www.brushcue.com/docs/py/examples/sunday-76)
- [Sunset Filter](https://www.brushcue.com/docs/py/examples/sunset-filter)
- [Swirl](https://www.brushcue.com/docs/py/examples/swirl)
- [Terracotta Sun](https://www.brushcue.com/docs/py/examples/terracotta-sun)
- [Tint Toward Color](https://www.brushcue.com/docs/py/examples/tint-toward-color)
- [Trapezoid Area](https://www.brushcue.com/docs/py/examples/trapezoid-area)
- [Triangle Area](https://www.brushcue.com/docs/py/examples/triangle-area)
- [Tropic Chrome](https://www.brushcue.com/docs/py/examples/tropic-chrome)
- [Vaporwave Filter](https://www.brushcue.com/docs/py/examples/vaporwave-filter)
- [Verdant Mist](https://www.brushcue.com/docs/py/examples/verdant-mist)
- [Vertical Mirror](https://www.brushcue.com/docs/py/examples/vertical-mirror)
- [Vibrancy](https://www.brushcue.com/docs/py/examples/vibrancy)
- [Vignette](https://www.brushcue.com/docs/py/examples/vignette)
- [Vintage Filter](https://www.brushcue.com/docs/py/examples/vintage-filter)
- [Warmth Adjust](https://www.brushcue.com/docs/py/examples/warmth-adjust)
- [Watercolor Effect](https://www.brushcue.com/docs/py/examples/watercolor-effect)
- [Whiten Image](https://www.brushcue.com/docs/py/examples/whiten-image)
- [Winter Filter](https://www.brushcue.com/docs/py/examples/winter-filter)
- [Y2K Filter](https://www.brushcue.com/docs/py/examples/y2k-filter)
- [Zoom Blur](https://www.brushcue.com/docs/py/examples/zoom-blur)

