Skip to main content

GPU-accelerated image processing library for Python

Project description

PyImageCUDA 0.1.5

PyPI version Build Status Python Platform Tests NVIDIA

GPU-accelerated image compositing for Python.

PyImageCUDA is built for image composition, not computer vision. It provides GPU tools to create, modify, and blend images, rather than analyze or recognize objects within them.

Quick Example

Demo
from pyimagecuda import Image, Fill, Effect, Blend, Transform, save

with Image(1024, 1024) as bg:
    Fill.color(bg, (0, 1, 0.8, 1))
    with Image(512, 512) as card:
        Fill.gradient(card, (1, 0, 0, 1), (0, 0, 1, 1), 'radial')
        Effect.rounded_corners(card, 50)

        with Effect.stroke(card, 10, (1, 1, 1, 1)) as stroked:
            with Effect.drop_shadow(stroked, blur=50, color=(0, 0, 0, 1)) as shadowed:
                with Transform.rotate(shadowed, 45) as rotated:
                    Blend.normal(bg, rotated, anchor='center')

    save(bg, 'output.png')

Key Features

  • Zero Dependencies: No CUDA Toolkit, Visual Studio, or complex compilers needed. Is Plug & Play on both Windows and Linux.
  • Ultra-lightweight: library weighs ~1 MB.
  • Studio Quality: 32-bit floating-point precision (float32) to prevent color banding.
  • Advanced Memory Control: Reuse GPU buffers across operations and resize without reallocation—critical for video processing and batch workflows.
  • OpenGL Integration: Direct GPU-to-GPU display for real-time preview widgets.
  • CUDA Interop (Zero-Copy): Native __cuda_array_interface__ v3 support. Share GPU buffers with CuPy, PyTorch, Numba and the rest of the CUDA Python ecosystem without copies.
  • API Simplicity: Intuitive, Pythonic API designed for ease of use.

Use Cases

  • Generative Art: Create thousands of unique variations in seconds.
  • Motion Graphics: Process video frames or generate effects in real-time.
  • Image Compositing: Complex multi-layer designs with GPU-accelerated effects.
  • Node Editors & Real-time Tools: Build responsive image editors with instant preview.
  • Game Development: Procedural UI assets, icons, and sprite generation.
  • Marketing Automation: Mass-produce personalized graphics from templates.
  • Data Augmentation: High-speed batch transformations for ML datasets.

PyImageCUDA Ecosystem

This library is the foundation. For visual workflows:

PyImageCUDA Studio

  • Node-based image compositor with real-time preview
  • Design templates visually, automate with Python
  • 40+ nodes: generators, effects, filters, transforms
  • Headless batch processing API
pip install pyimagecuda-studio

Installation

Installation

pip install pyimagecuda

Note: pyvips is the only mandatory dependency (installed automatically). It is used strictly for robust file I/O (JPG, PNG, WEBP...) and high-quality Text rendering on the CPU.

Documentation

Core Concepts

Operations

  • Fill (Solid colors, Gradients, Checkerboard, Grid, Stripes, Dots, Circle, Ngon, Noise, Perlin)
  • Text (Rich typography, system fonts, HTML-like markup, letter spacing...)
  • Blend (Normal, Multiply, Screen, Add, Overlay, Soft Light, Hard Light, Mask)
  • Resize (Nearest, Bilinear, Bicubic, Lanczos)
  • Adjust (Brightness, Contrast, Saturation, Gamma, Opacity, Vibrance, Hue)
  • Transform (Flip, Rotate, Crop, Zoom)
  • Filter (Gaussian Blur, Sharpen, Sepia, Invert, Threshold, Solarize, Sobel, Emboss)
  • Effect (Drop Shadow, Rounded Corners, Stroke, Vignette, Chroma Key)

Performance

PyImageCUDA shows significant speedups for GPU-friendly operations like blending, filtering, and transformations. Performance varies by operation complexity and workflow:

  • Complex operations (blur, blend, rotate) see 10-260x improvements
  • Simple operations (flip, crop) see 3-20x improvements
  • Real-world pipelines with file I/O typically see 1.5-2.5x speedups

Results depend on your hardware, batch size, and whether you reuse GPU buffers.

→ View Detailed Benchmarks

Requirements

  • OS:
    • Windows 10 or 11 (64-bit).
    • Linux: Any modern distribution (Ubuntu, Fedora, Debian, Arch, WSL2, etc.).
  • GPU: NVIDIA GPU (Maxwell architecture / GTX 900 series or newer).
  • Drivers: Standard NVIDIA Drivers installed.

NOT REQUIRED: Visual Studio, CUDA Toolkit, or Conda.

Linux Compatibility & Troubleshooting

PyImageCUDA is currently tested primarily on Ubuntu LTS releases with up-to-date NVIDIA drivers.

If you encounter the following error on Linux:

RuntimeError: Kernel launch failed: the provided PTX was compiled with an unsupported toolchain.

Solution: This indicates your installed NVIDIA drivers are too old to execute the kernels included in the library. Please update your NVIDIA drivers to the latest version available for your distribution (Proprietary drivers recommended).

We are actively investigating ways to broaden compatibility for older drivers and legacy Linux distributions in future releases.

Tests

pytest tests/tests.py

Contributing

Contributions welcome! Open issues or submit PRs

License

MIT License. See LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pyimagecuda-0.1.5-cp313-cp313-win_amd64.whl (499.3 kB view details)

Uploaded CPython 3.13Windows x86-64

pyimagecuda-0.1.5-cp313-cp313-manylinux_2_28_x86_64.whl (908.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

pyimagecuda-0.1.5-cp312-cp312-win_amd64.whl (499.3 kB view details)

Uploaded CPython 3.12Windows x86-64

pyimagecuda-0.1.5-cp312-cp312-manylinux_2_28_x86_64.whl (908.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

pyimagecuda-0.1.5-cp311-cp311-win_amd64.whl (499.7 kB view details)

Uploaded CPython 3.11Windows x86-64

pyimagecuda-0.1.5-cp311-cp311-manylinux_2_28_x86_64.whl (908.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

pyimagecuda-0.1.5-cp310-cp310-win_amd64.whl (499.7 kB view details)

Uploaded CPython 3.10Windows x86-64

pyimagecuda-0.1.5-cp310-cp310-manylinux_2_28_x86_64.whl (908.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

File details

Details for the file pyimagecuda-0.1.5-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pyimagecuda-0.1.5-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 499.3 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyimagecuda-0.1.5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c27bc22deaf40d7bb3c1ad5ac970f14258855e457832e4f4ded5d4485e381615
MD5 d6e28980cd2e27b1f88f4689dac1908c
BLAKE2b-256 7a125579d71c73b5880e74701006cfd06d4cae6cb692f31dc5f0a7a557458fa3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyimagecuda-0.1.5-cp313-cp313-win_amd64.whl:

Publisher: build.yml on offerrall/pyimagecuda

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyimagecuda-0.1.5-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyimagecuda-0.1.5-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4e97ecb3a03d10ca2358772f3fc1a11d97b82aeecec87f322255ca4affb44660
MD5 9c0a5bfda5aab88d4c0d233328d42b76
BLAKE2b-256 1c409efde5f7ddab4a5c29e3e273b07d5615377373bacb59a7a12c9d38fdc58c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyimagecuda-0.1.5-cp313-cp313-manylinux_2_28_x86_64.whl:

Publisher: build.yml on offerrall/pyimagecuda

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyimagecuda-0.1.5-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pyimagecuda-0.1.5-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 499.3 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyimagecuda-0.1.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 01dea358ca015e58d6d453d2d4482b193f88a735f14c8ff8440078f7399c084c
MD5 e67a000eb29802826e10200032a73280
BLAKE2b-256 ecfcc72d9f24d97ac4f5e158741a1e9cbabb3fc3aa71fa43a9d9335c661121b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyimagecuda-0.1.5-cp312-cp312-win_amd64.whl:

Publisher: build.yml on offerrall/pyimagecuda

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyimagecuda-0.1.5-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyimagecuda-0.1.5-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7a93d54f35162d01145acc47539e3da8b0d8b645d5a8784ce3b011ac40f37f64
MD5 2c1841cc513ce23fcd4378ade70afba9
BLAKE2b-256 40910f093b612ebddf797f65ec18e5e865356df2ed6e4d0db6be46786ec2937b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyimagecuda-0.1.5-cp312-cp312-manylinux_2_28_x86_64.whl:

Publisher: build.yml on offerrall/pyimagecuda

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyimagecuda-0.1.5-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pyimagecuda-0.1.5-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 499.7 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyimagecuda-0.1.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 f74c24a19865870ba4361fa1f8bda28c9878a1de628cc8555f6af1279f40612f
MD5 4d3605863cfceda8b6313055b8011f54
BLAKE2b-256 1e2d4a06eb1a2db301b38c1c18c6c1a75679e6d659093dbf3920a83bb050ffd8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyimagecuda-0.1.5-cp311-cp311-win_amd64.whl:

Publisher: build.yml on offerrall/pyimagecuda

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyimagecuda-0.1.5-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyimagecuda-0.1.5-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6335425ca66f6d927ce702e67d9e62de829feff85faa253575b5df905620ee8c
MD5 94fbd279ff70af962364aca2ab61401b
BLAKE2b-256 224f098dcf09bb49053e01755d854fb98821d039822e84fe218abcf27571f54b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyimagecuda-0.1.5-cp311-cp311-manylinux_2_28_x86_64.whl:

Publisher: build.yml on offerrall/pyimagecuda

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyimagecuda-0.1.5-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pyimagecuda-0.1.5-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 499.7 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyimagecuda-0.1.5-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 31f2f926ba8981d6e776c993a867fe26159122205cc27ae59c66c2964beb0183
MD5 8dfeacf5bbd8f3a8545322ce9420a46e
BLAKE2b-256 e6575c8fc6ea8c23cb18778bf9fb12055e29b55162d3a0370b0677821c39b0fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyimagecuda-0.1.5-cp310-cp310-win_amd64.whl:

Publisher: build.yml on offerrall/pyimagecuda

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyimagecuda-0.1.5-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyimagecuda-0.1.5-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4bd2ec479b9b71036e5ca5db1e9a572595f2227b2967c1897a5f68be7e591b7c
MD5 a131df4095165ea325c3b77f283fada1
BLAKE2b-256 52c4f016909428156d63468f58488ea7cec34e3b0683687b22a16e6d9a5ef36f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyimagecuda-0.1.5-cp310-cp310-manylinux_2_28_x86_64.whl:

Publisher: build.yml on offerrall/pyimagecuda

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page