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.dev0.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.dev0-cp314-cp314-win_amd64.whl (825.4 kB view details)

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.14macOS 10.9+ x86-64

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

zignal_processing-0.9.0.dev0-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.dev0-cp312-cp312-win_amd64.whl (806.6 kB view details)

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

zignal_processing-0.9.0.dev0-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.dev0-cp311-cp311-win_amd64.whl (806.9 kB view details)

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.9+ x86-64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

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

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: zignal_processing-0.9.0.dev0.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.dev0.tar.gz
Algorithm Hash digest
SHA256 cc16bc7e2792e7da611e06b0cc4b968e45e5aaa133b440dca2e311d328e9dbba
MD5 936a542be2be162a9b0b8a6feae0e8fd
BLAKE2b-256 94254b3d3e9ee304953a847375f528a9f19d70f0142939f2b7896accfaf5227b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.9.0.dev0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 d9b9f0e022194110e6e9c87590cd651bd4b14730c7a0d06cb82814b45ac5025c
MD5 4c234efe3c8e4eb6889af6c92a6098ae
BLAKE2b-256 04a0905aa47313e6f4e1455aab17f60b75714d64aed8b5c0e69a596dfe2bd729

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.9.0.dev0-cp314-cp314-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 616ddb8bd51da6091a0facfb6f77315ab3b3540cdc9b5e7a1212b91c76f48043
MD5 66a3f64816d55fac713ffd7635cd48fa
BLAKE2b-256 6c8e08f7f4ef30eeff7d144ee0a7fe81eae9cac0b1664682dae69267a93e12b4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.9.0.dev0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cd8fc18b8f3cad9684adc34285935af1b8238d1f00f06c9d7288622b8e08e0da
MD5 f91ca19ab28b8d3a6978132fce0824cd
BLAKE2b-256 8908d056d1fd7f94f0a50cfd8bde3e0c42da1bbafd6a70ead37ce3a1d0169a95

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.9.0.dev0-cp314-cp314-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 655fa95a84714560771984e3e31f1d228e43a8b38e3cd1bf11f159b57640a0c7
MD5 1f821cf9d2553a6278025e8c9b615a9b
BLAKE2b-256 71ec3999de46f3dcef8b7cb4b63cce1bef123e3c50d36b3064a29ab1cf7d12de

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.9.0.dev0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 25dfad30d927bb10136c2fd478e6d4d3dbab11c2d5dd42b7baa66f55b8ccfe71
MD5 db3e60557138626fc78d17dbc4869758
BLAKE2b-256 13e92a23c4be53c74518b030161b31718d3ef7936f9f07c145814177b3d82b75

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.9.0.dev0-cp313-cp313-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 e4659913f34df66f5eba40b85db4be9d1781722fc01d4da2314cfcc907dde784
MD5 d3e8bcafcae1beca937a6e5718237e9f
BLAKE2b-256 9289547055f4e2344776a74a89be5654f65ffd75f11fd589473a6c42ff8a496c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.9.0.dev0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7c8345166d571d05b3f0e89b8ab51d62329985bbcb449568e5e18c29d30f1ac5
MD5 cf09ab4df943119eae6392eed92fd7dc
BLAKE2b-256 d708d648550d9694c638674c88f2b8d64726d88a94bc91cb3787024001fb07c8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.9.0.dev0-cp313-cp313-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 9cd9cf908788b124c7e36dadbd7cedaa49baeaafd77d0831388117f4635d3f16
MD5 c4006bb6d44d587bf7493e2614d14f9f
BLAKE2b-256 1d06deda0005ddca1d52a3c49e545d8e0064928987038833127770160286d865

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.9.0.dev0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 88853805f1e3d5112aa95a47405a9b9a04f7b372fdaaf415dcaa62a7f17be4e8
MD5 06231a49af8d4bdaab24e5121f08f0a7
BLAKE2b-256 f2106f36d4144dcd65b1e3bb3fbf46c72c1cbe55d94f989820287d2db91fd09e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.9.0.dev0-cp312-cp312-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 d799874eee7ed3235d92ad718b7e15778f00336459b6c48b1007fed368a68b02
MD5 dd8fe52d83e1e9d8b0afdb34ac52b122
BLAKE2b-256 b900a5f66b1153741331fc0194b45827bd5a47243d1376c520562b71bf180835

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.9.0.dev0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 02d101b536df0992b58011363dcca1c35e13c5c6c9e3186da7e9dd4739926e19
MD5 9c03e71e422ae3ff194936986e4c3697
BLAKE2b-256 cc185039372f1bec093641bd782d6a09d819e8040dd95d7e6b16fdff3edf01ff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.9.0.dev0-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b740349a97079fb8cd834ef10882761d47770e7c8accfda12d14b3cfa8dcba1a
MD5 ab5bcf999da95c4c7f67a6f7e9182e98
BLAKE2b-256 48a5e454a771259fd5f5da8acd159d98c0de78ea39ae8dcdaa44c89168eeedd9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.9.0.dev0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 dd78ab6d1e0a91ac055e18f4d2b8204a306078328ba4e9739a20f5c367b557a6
MD5 2434fb9d67914cef4e5a0920a3a35d92
BLAKE2b-256 3d52ae5a5e0c4166a89faad9b72f34365e7c99936b3c7e5e27f2143524f2729c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.9.0.dev0-cp311-cp311-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 8ea0344048f741bd1c53744f4f8343330cc2f3d7909057a8e7dbb4bcdbc2edfb
MD5 f59f3ac0f38979601568a6591748c1d3
BLAKE2b-256 faff9b693b0a7e1eb4caa8cd935aecd252dbc750bbbe4a3a3f6dc0c03ab1bb63

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.9.0.dev0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b2dc0226d1508e3219d97e7468a7d1cce29dfa7e3047bc086ab43640c2ff3bb2
MD5 489e333b61516502d03de1d1a3765f2d
BLAKE2b-256 654a301614189f85e981f3f5af727eb8ee253c40a818e1d1ccfc73b880ee8540

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.9.0.dev0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 83bef2f8f4c404ee7aeae978e59b2dd14fe637781a0e717687fdc43f01a1e801
MD5 ff1752bbc94421ac447d13d4c6806023
BLAKE2b-256 966dc8263b50edfb73a1c4e804e87f0201b9d3a6379a7b5488c03a29dba77f3f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.9.0.dev0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 92df5c18b109a07f126e14be61ee927d1364f18355b48d6e09e9494200e6c0ee
MD5 36425c1cd162af988cb7d623ae90a70b
BLAKE2b-256 76b3b313f903b02987082f511a7a83abcc34e80f4ff7cc1d8a7d91c9f6ce3ef1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.9.0.dev0-cp310-cp310-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 7bb9bb97227eec7da8b2cd93a212cef1d36b2712ec968b0f970b0dfa19a0a521
MD5 ea1ddcc77e256d1951d6730c19be9c13
BLAKE2b-256 9cb382d4dad2e1857509e8efee335d84da3461f7329410e90cec06bcddd2469b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.9.0.dev0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a1d8e10421d52e06f2282858c0180736eeffb77c960df9a7002d734ddac7029c
MD5 440c3df4674184522d4ba21ef8edcaf0
BLAKE2b-256 32992874e73fa072d9e2079516c9e00c1fcd04ae8086f985bb44f67d42b0b78a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.9.0.dev0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8f6825b4a56d1742f55d1f4351426c1a9c9d9cee958c4ca88b10bfd8ebc710e3
MD5 463e9533ee85967aa2d038da434c61af
BLAKE2b-256 f02657f90c6ecd408a40e691134b2a1b88ce6c41326688d6b456f7eb21c515d0

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