Skip to main content

Zero-dependency image processing library

Project description

Zignal Python Bindings

PyPI version Python versions Downloads License: MIT

Zero-dependency image processing primitives written in Zig and packaged for Python.

Feature Overview

Area Highlights
Images PNG/JPEG load/save, resize & warp, crop/letterbox, insert/extract, Gaussian/median filters, motion blur
Pixels & Arrays Direct indexing/assignment, slice updates, zero-copy NumPy interop both directions
Colors 12 color models (Rgb/Rgba, Hsl/Hsv, Lab/Lch, Xyz/Xyb, Oklab/Oklch, Lms, Ycbcr) with automatic conversion
Canvas & Fonts Lines, arcs, splines, polygons, flood fills, bitmap font text rendering
Geometry Rectangle algebra, convex hulls, similarity/affine/projective transforms
Terminal Output SGR, Braille, Sixel, and Kitty renderers with automatic format negotiation
Numerics Matrices with rich linear algebra, PCA, optimization (Hungarian), running statistics

All functionality is implemented in Zig with no runtime dependencies, making the wheel lightweight and easy to vendor.

Installation

pip install zignal-processing
  • Python 3.10 – 3.14 (CPython)
  • Prebuilt wheels ship for:
    • Linux (manylinux2014) x86_64, aarch64
    • macOS x86_64 and arm64
    • Windows x86_64
  • Building from source requires Zig 0.15.0 or newer available on your PATH.

If CPython headers/libraries are in a non-standard location, set PYTHON_INCLUDE_DIR, PYTHON_LIBS_DIR, and PYTHON_LIB_NAME before installing.

Quickstart

import numpy as np
import zignal

# Load or create an image
img = zignal.Image.load("photo.jpg")                 # PNG/JPEG
canvas = zignal.Image(480, 640, color=zignal.Rgb(30, 144, 255)).canvas()

# Draw & process
canvas.draw_circle((120, 160), 60, zignal.Rgba(255, 255, 255, 180), fill=True)
img = img.gaussian_blur(1.5)
img = img.resize(0.5, zignal.Interpolation.BILINEAR)

# Pixels + NumPy (shared memory views)
img[10, 20] = zignal.Hsv(60, 100, 100)
np_view = img.to_numpy()                   # (rows, cols, 3) uint8 view
np_view[..., 0] = np.clip(np_view[..., 0] + 32, 0, 255)  # modifies img in-place
img2 = zignal.Image.from_numpy(np_view)    # zero-copy back into Zig

# Streaming stats & procedural noise
stats = zignal.RunningStats()
for value in np_view.mean(axis=-1).flat:
    stats.add(float(value))
noise = zignal.perlin(0.2, 0.4, amplitude=1.2, frequency=2.5, octaves=4)
print(f"μ={stats.mean:.3f} σ={stats.std_dev:.3f} perlin={noise:.3f}")

# Terminal preview (auto: kitty → sixel → sgr fallback)
print(f"{img:auto}")

# Save
img.save("out.png")

Documentation & Support

Development

zig build python-bindings          # build extension + stubs
cd bindings/python
uv venv && uv pip install -e .     # editable install
uv run pytest -q                   # run tests

Contributing Bindings

Follow the bindings guide for argument parsing helpers, enum registration, image ownership, and stub generation.

License

MIT

Project details


Download files

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

Source Distribution

zignal_processing-0.9.0.tar.gz (21.5 kB view details)

Uploaded Source

Built Distributions

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

zignal_processing-0.9.0-cp314-cp314-win_amd64.whl (825.4 kB view details)

Uploaded CPython 3.14Windows x86-64

zignal_processing-0.9.0-cp314-cp314-manylinux1_x86_64.whl (791.2 kB view details)

Uploaded CPython 3.14

zignal_processing-0.9.0-cp314-cp314-macosx_11_0_arm64.whl (696.9 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

zignal_processing-0.9.0-cp314-cp314-macosx_10_9_x86_64.whl (775.5 kB view details)

Uploaded CPython 3.14macOS 10.9+ x86-64

zignal_processing-0.9.0-cp313-cp313-win_amd64.whl (806.5 kB view details)

Uploaded CPython 3.13Windows x86-64

zignal_processing-0.9.0-cp313-cp313-manylinux1_x86_64.whl (790.8 kB view details)

Uploaded CPython 3.13

zignal_processing-0.9.0-cp313-cp313-macosx_11_0_arm64.whl (696.6 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

zignal_processing-0.9.0-cp313-cp313-macosx_10_9_x86_64.whl (775.3 kB view details)

Uploaded CPython 3.13macOS 10.9+ x86-64

zignal_processing-0.9.0-cp312-cp312-win_amd64.whl (806.5 kB view details)

Uploaded CPython 3.12Windows x86-64

zignal_processing-0.9.0-cp312-cp312-manylinux1_x86_64.whl (790.8 kB view details)

Uploaded CPython 3.12

zignal_processing-0.9.0-cp312-cp312-macosx_11_0_arm64.whl (696.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

zignal_processing-0.9.0-cp312-cp312-macosx_10_9_x86_64.whl (775.3 kB view details)

Uploaded CPython 3.12macOS 10.9+ x86-64

zignal_processing-0.9.0-cp311-cp311-win_amd64.whl (806.9 kB view details)

Uploaded CPython 3.11Windows x86-64

zignal_processing-0.9.0-cp311-cp311-manylinux1_x86_64.whl (790.3 kB view details)

Uploaded CPython 3.11

zignal_processing-0.9.0-cp311-cp311-macosx_11_0_arm64.whl (696.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

zignal_processing-0.9.0-cp311-cp311-macosx_10_9_x86_64.whl (774.9 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

zignal_processing-0.9.0-cp310-cp310-win_amd64.whl (806.9 kB view details)

Uploaded CPython 3.10Windows x86-64

zignal_processing-0.9.0-cp310-cp310-manylinux1_x86_64.whl (790.3 kB view details)

Uploaded CPython 3.10

zignal_processing-0.9.0-cp310-cp310-macosx_11_0_arm64.whl (696.1 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

zignal_processing-0.9.0-cp310-cp310-macosx_10_9_x86_64.whl (774.9 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

Details for the file zignal_processing-0.9.0.tar.gz.

File metadata

  • Download URL: zignal_processing-0.9.0.tar.gz
  • Upload date:
  • Size: 21.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for zignal_processing-0.9.0.tar.gz
Algorithm Hash digest
SHA256 d411ff066b8b7235089e47dbd71174ab2a530066016fcc7dd6f9f7450f1ff865
MD5 7c3b227c24b4269628f6d15c19f7cb1b
BLAKE2b-256 94e75f2d43502c834aa5b8e441c820096cf274b7ca9c148ebcc455299ca48beb

See more details on using hashes here.

File details

Details for the file zignal_processing-0.9.0-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for zignal_processing-0.9.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 48231b8b9d04c4bd2283801293355aaf5f9186a5467d4f6f988762558f84bbfb
MD5 2774eac0c352cf8a94a4113a2ddb8c22
BLAKE2b-256 f753fc4c72f3565680b333e3a661ad70b71848cb0e411c7413bb1fbf02e85a85

See more details on using hashes here.

File details

Details for the file zignal_processing-0.9.0-cp314-cp314-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for zignal_processing-0.9.0-cp314-cp314-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 ab3ca94ed79ac999a7b028c4c1865127e74c376cc3f33776f6b1170e94ec8112
MD5 471a563c0de1eee07f06376dac57562d
BLAKE2b-256 71ff37ef32bf9741b44ef42b9a0e17d25c56f876cf0b6f881b1c08cff5d53448

See more details on using hashes here.

File details

Details for the file zignal_processing-0.9.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zignal_processing-0.9.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5f0c76d937fca421c3fb32fbb573d1d7d10995acf46578808289445b786ba163
MD5 d9b230a5008fc3c544cfdb4263901604
BLAKE2b-256 31f5853bcb050dddca9e6531d1d3f537a631bd974b605f97a7c546de95ee5189

See more details on using hashes here.

File details

Details for the file zignal_processing-0.9.0-cp314-cp314-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for zignal_processing-0.9.0-cp314-cp314-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4c2891f12a888d6fdc8d1cdd6e3824018685c76113018a32dcd5b6a9da5fd5d0
MD5 44fdeb2eac4a2bb359e6f3cc2aba349d
BLAKE2b-256 27cda3c9ab3bc7182c9c3efeaf05c4ac91d9f89198f0bf67dbab3c54266691d2

See more details on using hashes here.

File details

Details for the file zignal_processing-0.9.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for zignal_processing-0.9.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 f66078d3e9a4658be8efbb1d706c8bb5fed611ac23a67cb61d3c8ab6aed33da2
MD5 673a4b9b79d783d454d298c99563011d
BLAKE2b-256 c4ac8bacfa253c801da0cb6075168694fd90b03db38e24d219d94a7f39a61c0f

See more details on using hashes here.

File details

Details for the file zignal_processing-0.9.0-cp313-cp313-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for zignal_processing-0.9.0-cp313-cp313-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 16b5ece1a1ac4c0d391912ec407ccc5635fd2265648b1d84a6f8154cbbe624b1
MD5 0caa9c41f00345f497ca6fbcfd326951
BLAKE2b-256 8c7cfb8a08725d5ac257576176cdd6c9d4c5bacd17f75ddcbd67d59fe1c9fda2

See more details on using hashes here.

File details

Details for the file zignal_processing-0.9.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zignal_processing-0.9.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c6f10d2b2e93898b0b496d360fc0822a0283709ef471470c701f97bd6f0ea297
MD5 218c821c20db9ac2256be90f77b3d6be
BLAKE2b-256 116ba5ddcba7fd49b094b34d4f6c842085536ad01f2be0f324df75f4afb20162

See more details on using hashes here.

File details

Details for the file zignal_processing-0.9.0-cp313-cp313-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for zignal_processing-0.9.0-cp313-cp313-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 efc47ded67dd210355f08c4d0a3cf87e647ed3e730b383a38640b57622ef2672
MD5 9dad6a3aa09632056cb408a5eef72ddf
BLAKE2b-256 d5793377436728fe9335f66e36c2f332fb7c0fd5fd17451a673ebd8105abbc99

See more details on using hashes here.

File details

Details for the file zignal_processing-0.9.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for zignal_processing-0.9.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 258f84b82504d8095abdb64dbfbda5a543ed990f8fd867fb98907b6ed8717b65
MD5 8ace41d574148893220bafc766d8e22d
BLAKE2b-256 08451b78def95d66575bf7fb471f7d86dacb78efaee61d2c3dae766b61e90e61

See more details on using hashes here.

File details

Details for the file zignal_processing-0.9.0-cp312-cp312-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for zignal_processing-0.9.0-cp312-cp312-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 28b700673030c7dfacb6739a12966fde0531d1ce7f7b98710630acc928162bdc
MD5 995047ab4685884342b3b45a983f6c2a
BLAKE2b-256 833db5664bb53ff79a30529cf0aaf2660cbed4369e51dbd7bd95e1bc382eaa0f

See more details on using hashes here.

File details

Details for the file zignal_processing-0.9.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zignal_processing-0.9.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e387dd7b12dbfc65629d60f890605d3b5a90281ecd04a08e81c7509b966ecf1c
MD5 7dd30e9dffff41d5901079c2073ac6cf
BLAKE2b-256 87eb2c5fa26bc81c07ac093a6b205f554a80ed76e67faf1b2d537d89ea938e6d

See more details on using hashes here.

File details

Details for the file zignal_processing-0.9.0-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for zignal_processing-0.9.0-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 32815871641de8814d4a98710db39acb59f56e4f01559c2163bb5111178928c1
MD5 7399da1752bd0db0ddde9b46d1da2fa9
BLAKE2b-256 0f51789c863b663de42d77be6ef9083563241392f412b23bbc20dc609dd82d70

See more details on using hashes here.

File details

Details for the file zignal_processing-0.9.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for zignal_processing-0.9.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 ca3b0d1b67d7fc3c315fffe727ccfcdcf4a88d12a921b52dd85b4e8b0cb878c3
MD5 2d7dd6ded6ce64be5f9994e728f33e2c
BLAKE2b-256 ed468b229a6320bcc2e40520e1c4c7a701cca18a63caac9303abf3688c5ec2c3

See more details on using hashes here.

File details

Details for the file zignal_processing-0.9.0-cp311-cp311-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for zignal_processing-0.9.0-cp311-cp311-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 7eab1bc5d28484125fb733e03dc9aaa557313e89bb84dc19e2a76ee5f1cb0b38
MD5 ed57a9c6081bfc0851904798b2c2d996
BLAKE2b-256 4054e5b81d3d82496a8a5675600319bfeaf5043218ee14a7bb055841c35ac1e4

See more details on using hashes here.

File details

Details for the file zignal_processing-0.9.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zignal_processing-0.9.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7a2a22501dc33934fbe151ef3fc7d97983cd9e8095c45080b24c6140627e019a
MD5 c39bbea80e49490d4a0f7aeaca87911e
BLAKE2b-256 1491bd583fd60192c10f58c019d38962f30649fd6503bbc1a38d5695864d7df2

See more details on using hashes here.

File details

Details for the file zignal_processing-0.9.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for zignal_processing-0.9.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 147f1492b593531d997b8d447330af85c2c202fcb7bdcfdf235076d3951f3f12
MD5 1b9c71177664732e5a239f8da7ea1a57
BLAKE2b-256 6e3e564ae5fd3e3489a08e5733f35af45e68eed7974504e6d749b641e3b49c3b

See more details on using hashes here.

File details

Details for the file zignal_processing-0.9.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for zignal_processing-0.9.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 9920308835f2c5d7b9957fdd8515a9aee914993bd39799a21af5dbb9dce01135
MD5 05457432508e63a509db549776829bda
BLAKE2b-256 8a1b128ee59c3cdcda9d5de618d85def17abeab83362d322eb671b89e403e456

See more details on using hashes here.

File details

Details for the file zignal_processing-0.9.0-cp310-cp310-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for zignal_processing-0.9.0-cp310-cp310-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 bcd051283e89bdf556f79672fcbd680c048d21e05dc2dd1ce936d441ebb55831
MD5 291f77e79ca871c945afe835f44c54e4
BLAKE2b-256 cd74d8b7bf2604f415d858cfacb3f67e531dcd553d1b922d35cb946b22c4a8fe

See more details on using hashes here.

File details

Details for the file zignal_processing-0.9.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zignal_processing-0.9.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 32734ecdd1f25baca2b2c86d94bd3b039cfa88bb2efb0a5502c99ebe0c1d1d14
MD5 d9f172c0715fdea835a5ab576851616a
BLAKE2b-256 1f5bf96a0cc9a69ef4cb9d717a51f072ad46f26c0babdb5d92875923ea4f0bd8

See more details on using hashes here.

File details

Details for the file zignal_processing-0.9.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for zignal_processing-0.9.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8d11e1a13228b33c3eeba1484f55a28bd05746bc051f5d8b542d4e417ae9ae0f
MD5 a7be430f8500cf8bc223b9dae33d35b0
BLAKE2b-256 75faea0d18609c825d7e592e8417b796196af68e218f9e41eeba10d1153092e4

See more details on using hashes here.

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