Skip to main content

GPU-accelerated image processing library for Python

Project description

PyImageCUDA 0.1.1

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.
  • 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.1-cp313-cp313-win_amd64.whl (498.0 kB view details)

Uploaded CPython 3.13Windows x86-64

pyimagecuda-0.1.1-cp313-cp313-manylinux_2_28_x86_64.whl (906.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

pyimagecuda-0.1.1-cp312-cp312-win_amd64.whl (498.0 kB view details)

Uploaded CPython 3.12Windows x86-64

pyimagecuda-0.1.1-cp312-cp312-manylinux_2_28_x86_64.whl (906.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

pyimagecuda-0.1.1-cp311-cp311-win_amd64.whl (498.4 kB view details)

Uploaded CPython 3.11Windows x86-64

pyimagecuda-0.1.1-cp311-cp311-manylinux_2_28_x86_64.whl (906.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

pyimagecuda-0.1.1-cp310-cp310-win_amd64.whl (498.4 kB view details)

Uploaded CPython 3.10Windows x86-64

pyimagecuda-0.1.1-cp310-cp310-manylinux_2_28_x86_64.whl (906.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

File details

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

File metadata

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

File hashes

Hashes for pyimagecuda-0.1.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 2583da203fff4cee2ba79eccb350188ec5dadf7e28e5d2bf2dbd5e55888c61d8
MD5 b315eda2abeb9980402b51299c6ae876
BLAKE2b-256 a6cf01ae30f1967cbecd73418b7a28fd48a6818aac329765b4b6adedd52f552d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyimagecuda-0.1.1-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.1-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyimagecuda-0.1.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a31cc7db80808abf04f7152f21e6b97b5eb203ed562df0002bb734dcbb23e983
MD5 576a28346c630f3d3573816f79d36437
BLAKE2b-256 50ba3776114b59146e2285a9afc1194a72191a2764e70c36ae96c2be101a8819

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyimagecuda-0.1.1-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.1-cp312-cp312-win_amd64.whl.

File metadata

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

File hashes

Hashes for pyimagecuda-0.1.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a894e9dee156d37def05af262011154bb2006bf16eab803e5467612b2b1377e4
MD5 3812fd9a2db5c5940a817109fadaf0a9
BLAKE2b-256 067208ff5b63a548193c1211289a239b4172844d379fc0f55cffe67bf6603dad

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyimagecuda-0.1.1-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.1-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyimagecuda-0.1.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 afee40716bde7f93850d287d9c18e5ea9ea9ccdf022803fef3447972129a2d29
MD5 a0595a9184c3fa945a22d655340484f9
BLAKE2b-256 734385dc984e0cee47e90ee84c63bbe9116d65e70c1efc322cc4b10934276661

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyimagecuda-0.1.1-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.1-cp311-cp311-win_amd64.whl.

File metadata

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

File hashes

Hashes for pyimagecuda-0.1.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 3c3d7ac46fb37a0533f53d7091e179829fe31030827c5b4175849b205d1cc91e
MD5 da41db2c2f4774833c75ea1b61ad68a9
BLAKE2b-256 946e14f48ca0311591b12c622e87244def5966254d94cbf207eed8d1dd019a12

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyimagecuda-0.1.1-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.1-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyimagecuda-0.1.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b91b70f9f33ee77d0aea175fd89977a3c89a494829073233401941502c9ed94c
MD5 a1532fc3f6181cd035d885e48ff10919
BLAKE2b-256 71acace5060ea2aed3ba562fefc2e9bf91623a1e679859b6709c165012d59b7e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyimagecuda-0.1.1-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.1-cp310-cp310-win_amd64.whl.

File metadata

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

File hashes

Hashes for pyimagecuda-0.1.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e496a7c30d23e76e645ec8abbc510647acf9d70f26f3e540afc3fc1de7591e7d
MD5 1e196aa4a575ad3b538c4d0cec9987b4
BLAKE2b-256 e58ea25f71ebf3cb34caab95d96cfeb4f6f6adda8c9604aab6486d83818bf70d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyimagecuda-0.1.1-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.1-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyimagecuda-0.1.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b1cea74c04ea6899c5eca59c0602149b2d5e76e7d9ddfdab873154fb71633b44
MD5 b0d5033827ae3be5df9ac8c9f757469f
BLAKE2b-256 1f3a336998d5ae5aa371c58e38db60d056e7e52aabe7c82ebd8724ab2b6c30fe

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyimagecuda-0.1.1-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