Skip to main content

A modern, high-performance image processing library for Python, powered by Rust.

Project description

Puhu 🦉

CI PyPI Documentation Python Rust License

A modern, high-performance image processing library for Python, powered by Rust. Puhu provides a Pillow-compatible API while delivering significantly better performance for common image operations.

Features

  • High Performance - Rust-powered for significantly faster operations
  • Pillow Compatible - Drop-in replacement for most Pillow operations
  • Memory Safe - Built with Rust's memory safety guarantees
  • Easy to Install - Pre-built wheels for all major platforms
  • Rich Format Support - PNG, JPEG, BMP, TIFF, GIF, WEBP

Installation

pip install puhu

Pre-built wheels are available for:

  • Linux (x86_64, ARM64)
  • macOS (Intel, Apple Silicon)
  • Windows (x64)
  • Python 3.8+

Quick Start

import puhu

# Open and process an image
img = puhu.open("photo.jpg")
img = img.resize((800, 600))
img = img.crop((100, 100, 500, 400))
img.save("output.png")

# Drop-in Pillow replacement
from puhu import Image
img = Image.open("photo.jpg")
img = img.resize((400, 300))
img.save("resized.jpg")

Documentation

Full documentation is available at puhu.readthedocs.io

Benchmarks

Full benchmarks are available at BENCHMARKS.md

Development

Building from Source

# Clone repository
git clone https://github.com/bgunebakan/puhu.git
cd puhu

# Install dependencies
pip install -r requirements.txt

# Build and install
maturin develop --release

# Run tests
pytest python/puhu/tests/

Requirements: Python 3.8+, Rust 1.70+, Maturin

Contributing

Contributions are welcome! See our Contributing Guide for details.

License

MIT License - see LICENSE file for details.

Links

Built with PyO3 and image-rs

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

puhu-0.3.0.tar.gz (46.2 kB view details)

Uploaded Source

Built Distributions

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

puhu-0.3.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (964.3 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

puhu-0.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (939.8 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

puhu-0.3.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (940.7 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

puhu-0.3.0-cp38-abi3-win_amd64.whl (782.1 kB view details)

Uploaded CPython 3.8+Windows x86-64

puhu-0.3.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (967.8 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ x86-64

puhu-0.3.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (941.1 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

puhu-0.3.0-cp38-abi3-macosx_11_0_arm64.whl (859.8 kB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

puhu-0.3.0-cp38-abi3-macosx_10_12_x86_64.whl (918.3 kB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

Details for the file puhu-0.3.0.tar.gz.

File metadata

  • Download URL: puhu-0.3.0.tar.gz
  • Upload date:
  • Size: 46.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.11.5

File hashes

Hashes for puhu-0.3.0.tar.gz
Algorithm Hash digest
SHA256 d73659142c8c4d325790d3f4db4582e26709add889968b4a905e50dae143a7d8
MD5 5bd2c9b986a08d0df514991a7a0f9b32
BLAKE2b-256 3901eb8181b524c88ee7ef8a2396c5aac87626c155e0ec061ebc16e005f93f88

See more details on using hashes here.

File details

Details for the file puhu-0.3.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for puhu-0.3.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c8abb9fae21d8c770989cb2761d79aaf832a5b0600978e6338919b56db94744b
MD5 f2b0a80b8e60df9e7c0e9fa12596d2d2
BLAKE2b-256 5b4f7d213c6346bcc3fa497ec1358cad1182cc642133a0c515db2b7898741e94

See more details on using hashes here.

File details

Details for the file puhu-0.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for puhu-0.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1300286c1adcbf5d5090f4a4d791fdcb96b607a2a3222b8de8c90cd5af62f935
MD5 9c472d814739db646978226b0d0a504b
BLAKE2b-256 36c8cc3586ccab8ab6aa5aa74d134bf92c013c0e15e7db1a84343a2b01568ed1

See more details on using hashes here.

File details

Details for the file puhu-0.3.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for puhu-0.3.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 de4b682796a3831c961485a3ec7a3497d4e69a3f67d7f0bf19d93ae267f4027f
MD5 87998cb8c2cdc02fa3c16972b5fb6303
BLAKE2b-256 908bf4fb2661a48c083c64315d755e6b49704dfa3a25efc86d22e2983f40540c

See more details on using hashes here.

File details

Details for the file puhu-0.3.0-cp38-abi3-win_amd64.whl.

File metadata

  • Download URL: puhu-0.3.0-cp38-abi3-win_amd64.whl
  • Upload date:
  • Size: 782.1 kB
  • Tags: CPython 3.8+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.11.5

File hashes

Hashes for puhu-0.3.0-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 82da695073533c710f67fd2b0c76894f40b247239712bf560636f389e2eb05c3
MD5 d7962ffe7076ab6166f6ff3f2608d2cb
BLAKE2b-256 b1eb4d96283e84991289a24d44406f562771c9aa6f12836c78faff5efc63ffdd

See more details on using hashes here.

File details

Details for the file puhu-0.3.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for puhu-0.3.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 020e78e1ecd7b6ad75bbe2b9183de1b8bb8658d8046b76edb4dbbc2369209eed
MD5 76183cf1354dd356c71c5989ac72470d
BLAKE2b-256 a4e8d8218ae6adaf7d1353cbe7dafb980f47a11b57b2607f4cb0e0b7d2688129

See more details on using hashes here.

File details

Details for the file puhu-0.3.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for puhu-0.3.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d275b710c2108791f4fce176596ff6b56a99c3d6d295dc230367984cee31bd1c
MD5 6054b66108fffac6f71a75e8a9395f87
BLAKE2b-256 0add48d05eaa90c571e0fc073d31068251cfc550bd286e24f3d09c333ae5fd08

See more details on using hashes here.

File details

Details for the file puhu-0.3.0-cp38-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for puhu-0.3.0-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b6903a2f7b4018f9a27e13f727426a23dad18fe39a7d681b267693aad6a134ba
MD5 eec7566a0c9dc3b0292861952f85cee9
BLAKE2b-256 9e84970ec3d1fa33cc29a3a058d2355dfc4b179003fd44db932e54958a33d34c

See more details on using hashes here.

File details

Details for the file puhu-0.3.0-cp38-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for puhu-0.3.0-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8cfd0ce13c15af3fde0286a52925c29d60e8b6358d91e1f9cb1bba91e733eeef
MD5 c5dc5a2b979f524b8e51ce4eb50189b3
BLAKE2b-256 ff98d22aae111cbdf88c9583167e5a9daf58c7fbd8ddace9244e53d38e652eb0

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