Skip to main content

Zero-dependency image processing library

Project description

Zignal Python Bindings

Zero‑dependency image processing primitives in Zig, exposed to Python.

Install

pip install zignal-processing

Docs: https://bfactory-ai.github.io/zignal/python/zignal.html

Quickstart

import zignal

# Load / create
img = zignal.Image.load("photo.jpg")                # PNG/JPEG
img = zignal.Image(480, 640, color=(30, 144, 255))  # RGB fill

# Process
img = img.gaussian_blur(1.5)
img = img.resize(0.5, zignal.InterpolationMethod.BILINEAR)

# Pixels and NumPy interop with shared memory
img[10, 20] = zignal.Hsv(60, 100, 100)
arr = img.to_numpy()                 # (rows, cols, 3) uint8 view
img2 = zignal.Image.from_numpy(arr)  # zero‑copy with shared memory

# Draw
canvas = img.canvas()
canvas.draw_line((10, 10), (100, 60), zignal.Rgb(255, 0, 0))

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

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

Highlights

  • Image ops: load/save, resize/warp, crop/letterbox, extract/insert, blur/sharpen, flips
  • Pixels: direct get/set; slice assignment; NumPy zero‑copy to/from
  • Colors: 12 spaces (Rgb/Rgba, Hsl/Hsv, Lab/Lch, Xyz/Xyb, Oklab/Oklch, Lms, Ycbcr)
  • Canvas: lines, circles, polygons, text via bitmap BDF/PCF fonts
  • Geometry: Rectangle, ConvexHull, SimilarityTransform, AffineTranform, ProjectiveTransform
  • Matrix: float64 matrices with NumPy bridge
  • Terminal: SGR, Braille, Sixel, Kitty
  • Advanced: FeatureDistributionMatching
  • Core: Zig, no external dependencies

Development

  • Build native extension: zig build python-bindings
  • Generate stubs (.pyi): zig build python-stubs
  • Editable install: cd bindings/python && uv venv && uv pip install -e .
  • Tests: uv run pytest -q

If Python headers/libs aren’t auto‑detected during build, set: PYTHON_INCLUDE_DIR, PYTHON_LIBS_DIR, PYTHON_LIB_NAME.

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.5.0.tar.gz (15.4 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.5.0-cp313-cp313-win_amd64.whl (603.4 kB view details)

Uploaded CPython 3.13Windows x86-64

zignal_processing-0.5.0-cp313-cp313-manylinux1_x86_64.whl (585.4 kB view details)

Uploaded CPython 3.13

zignal_processing-0.5.0-cp313-cp313-macosx_11_0_arm64.whl (435.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

zignal_processing-0.5.0-cp313-cp313-macosx_10_9_x86_64.whl (537.7 kB view details)

Uploaded CPython 3.13macOS 10.9+ x86-64

zignal_processing-0.5.0-cp312-cp312-win_amd64.whl (603.4 kB view details)

Uploaded CPython 3.12Windows x86-64

zignal_processing-0.5.0-cp312-cp312-manylinux1_x86_64.whl (585.4 kB view details)

Uploaded CPython 3.12

zignal_processing-0.5.0-cp312-cp312-macosx_11_0_arm64.whl (435.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

zignal_processing-0.5.0-cp312-cp312-macosx_10_9_x86_64.whl (537.7 kB view details)

Uploaded CPython 3.12macOS 10.9+ x86-64

zignal_processing-0.5.0-cp311-cp311-win_amd64.whl (603.0 kB view details)

Uploaded CPython 3.11Windows x86-64

zignal_processing-0.5.0-cp311-cp311-manylinux1_x86_64.whl (584.7 kB view details)

Uploaded CPython 3.11

zignal_processing-0.5.0-cp311-cp311-macosx_11_0_arm64.whl (434.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

zignal_processing-0.5.0-cp311-cp311-macosx_10_9_x86_64.whl (537.2 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

zignal_processing-0.5.0-cp310-cp310-win_amd64.whl (603.0 kB view details)

Uploaded CPython 3.10Windows x86-64

zignal_processing-0.5.0-cp310-cp310-manylinux1_x86_64.whl (584.7 kB view details)

Uploaded CPython 3.10

zignal_processing-0.5.0-cp310-cp310-macosx_11_0_arm64.whl (434.9 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

zignal_processing-0.5.0-cp310-cp310-macosx_10_9_x86_64.whl (537.3 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

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

File metadata

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

File hashes

Hashes for zignal_processing-0.5.0.tar.gz
Algorithm Hash digest
SHA256 e4af4ccca9598377da0d4d87de1f3a6277bb6966a67d19036c5b4bbed169af20
MD5 26d51006913765c19e696ad3db5f7277
BLAKE2b-256 7a106fe08eb07d2bb501a403b7e50c0885779184098d388470d18d02f13e1ee8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.5.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 0c85448e852a61a21024f15d5e3fc5bef722118f353672408300183bc3b8c9d1
MD5 fd90e260b5a7cf5218129cf6a8ce372a
BLAKE2b-256 a1c2f9de1314c3c81096d68116ae0d05f86cedc289ec6bafa5c1169e54842ee9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.5.0-cp313-cp313-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 85a6278f937e9874d58dbffc6edc39407913d835d4d273dcdf90b8f26ab90e22
MD5 4d79a314fe313e79b3d1cb0babe2155c
BLAKE2b-256 8150bb7420b430aa6e030a74d07381e802974205b6027a055e10301f65eff820

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.5.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d16c402f54f83d29acab9bca101a444b37dee04e643a498786c54c2fcb3e9942
MD5 e920420ded87530cb8d606a18afb03f0
BLAKE2b-256 002e6e8b62b42a1f5f93e4578abbeff7982ec538cba99471edde34f35ad1ec26

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.5.0-cp313-cp313-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e134620690063b55a3d12c910988863c13b1f000a754eaedbfdd927992e3ca62
MD5 955e203506d12267845036f80bfa0a59
BLAKE2b-256 5ac275138c71064c049cec549c466a5f8eca918c7d895ea5822d3bc9bd77be5a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.5.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 9a6710afc0b8358a317ca2025e8abee551ed6792b204348b5a50a09f11b77046
MD5 d277ac424756585090e46b329fbaa614
BLAKE2b-256 2966b611aa463afa843ba241e97078b8b8f33bcbb81ea9951c5f85c464ba3fba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.5.0-cp312-cp312-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 e5ecde071e49cd67c049773afc84b721188dc0ceee6d306111fc36c78ac1da03
MD5 9d81794bb428468083906b904d10b855
BLAKE2b-256 a7746c95498b85f4de4796e8af80b1a13bcef09aa6f9cb6e4a754e821245a0d1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.5.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1536728cfd1725a471972af810def6c07bf10da0e85e31a9bb69ab4d38eebfd6
MD5 ab1e706c21da914a8c34e31f0e7f6650
BLAKE2b-256 843fa2fc42861a1e9796245de7d3fc4ddaff01eed8d02852356245be89b96dd5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.5.0-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a39803043ad13eab7d1eaf536a447de13e077d4c93053f1ede71acf3d5aaed31
MD5 53d3dc31ea33ec3a1095bdd7e4119d25
BLAKE2b-256 046c9666dddab24517fc33cfe5a052c6a86e04b71c4f857b018dd47214ec0936

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.5.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 1c831cbccef947f50e31afc8c734d6c24ae3cb5658d5121ea183189678b1c7fe
MD5 6561ee8358021957f8db7aa6c53cc627
BLAKE2b-256 19a5d128b4c06efc74811ddb892055f95fda26c63f0ee3bd4077b2355d00a24e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.5.0-cp311-cp311-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 2a34addc54b04abae0b39bda657faa835777bdcde370ed6e4876dd876d72ad37
MD5 e4ba1539d9f5b62d66334a0400b690b2
BLAKE2b-256 7eacbb329b23da2287d473ab74755dd8c515000716ff76893820ee52fa678f97

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.5.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e1ec0433a21d5e52a6c68d914af6a11aee396e38d08aac7aa7c2be2bc4fc7772
MD5 90357743bc8c26a1a303f2f8b842e1cd
BLAKE2b-256 bfbf8b6239d0751b5a436f29a317b7c3d0de1ffe037d6f1ffc8e7e238d8e8d61

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.5.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 14d44f31c989182e324572053a3d2d397eed6b0a24dbe07ac8317346e713db40
MD5 1e71e12c8a41f4ca0b963df1d0ccac56
BLAKE2b-256 987415fe52337dac3377a17a6ec48d3109e0cd6d73a26bdaf3757f50e9e35110

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.5.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 3034b5bc1db8bd9cf94ef5d10df67640e5cc6faa117e5f9a52ecb1d61da569b5
MD5 0bf1f9a4e522184019293908b90ee8a8
BLAKE2b-256 79d1b491c4571dfb64e47391a6af9646aee653564f26ea32bdc0fb44e47a317b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.5.0-cp310-cp310-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 faed32112bb06a52ed5c9f9a4a66f21dbf222d96ebdd2dc0a1c5a5106b4748b1
MD5 efaff6a56ab3f017dea235aa487b9843
BLAKE2b-256 7de10e53562b5777d43b74a1e56905ecef871b53eb9ec09984840dd255f79ad9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.5.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9dac2941c4ada97445c73259ff70d4069167f99ab38902c5b1d0f4842da0b032
MD5 4f73e3cf54f035756f6d0d2d2e0b4c94
BLAKE2b-256 74b197d8c0ec62bde74fb20f8d269e331e681a2197e719f1595959c8c9349de7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for zignal_processing-0.5.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 75b0b52a5a83765f370b48e33d9e03c73e7fc2289a83edd6384db86aabff67b5
MD5 447055df80de28ddb231c6c9870b0c39
BLAKE2b-256 335417c8a9ceb71eaa39d4fd4e56ff60296ab20d9b7546b4b077a2479c60bbc7

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