Skip to main content

A Python image library that sits on top of Pillow, Wand and OpenCV

Project description

Willow image library

PyPI PyPI downloads Build Status

A wrapper that combines the functionality of multiple Python image libraries into one API.

Documentation

Overview

Willow is a simple image library that combines the APIs of Pillow, Wand and OpenCV. It converts the image between the libraries when necessary.

Willow currently has basic resize and crop operations, face and feature detection and animated GIF support. New operations and library integrations can also be easily implemented.

The library is written in pure Python and supports versions 3.9, 3.10, 3.11, 3.12, and 3.13.

Examples

Resizing an image

from willow.image import Image

f = open('test.png', 'rb')
img = Image.open(f)

# Resize the image to 100x100 pixels
img = img.resize((100, 100))

# Save it
with open('test_thumbnail.png', 'wb') as out:
   img.save_as_png(out)

This will open the image file with Pillow or Wand (if Pillow is unavailable).

It will then resize it to 100x100 pixels and save it back out as a PNG file.

Detecting faces

from willow.image import Image

f = open('photo.png', 'rb')
img = Image.open(f)

# Find faces
faces = img.detect_faces()

Like above, the image file will be loaded with either Pillow or Wand.

As neither Pillow nor Wand support detecting faces, Willow would automatically convert the image to OpenCV and use that to perform the detection.

Available operations

Documentation

Operation Pillow Wand OpenCV
get_size()
get_frame_count() ✓** ✓**
resize(size)
crop(rect)
rotate(angle)
set_background_color_rgb(color)
transform_colorspace_to_srgb(rendering_intent)
auto_orient()
save_as_jpeg(file, quality)
save_as_png(file)
save_as_gif(file)
save_as_webp(file, quality)
save_as_heic(file, quality, lossless) ✓⁺
save_as_avif(file, quality, lossless) ✓⁺ ✓⁺
save_as_ico(file)
has_alpha() ✓*
has_animation() ✓* ✓*
get_pillow_image()
get_wand_image()
detect_features()
detect_faces(cascade_filename)

* Always returns False

** Always returns 1

⁺ Requires the pillow-heif library

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

willow-1.10.0.tar.gz (113.7 kB view details)

Uploaded Source

Built Distribution

willow-1.10.0-py3-none-any.whl (119.3 kB view details)

Uploaded Python 3

File details

Details for the file willow-1.10.0.tar.gz.

File metadata

  • Download URL: willow-1.10.0.tar.gz
  • Upload date:
  • Size: 113.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for willow-1.10.0.tar.gz
Algorithm Hash digest
SHA256 e10673ff954e79ca0412c648e40dd9ce0b93c8bef798e8468ce3411ff972fb15
MD5 65d502d5e4b1a878c6d29890dbf6e4af
BLAKE2b-256 8d739bc0a72cfaf0f280e9aeea61eae8760723b8c353c0656041dda4c6dc2833

See more details on using hashes here.

Provenance

The following attestation bundles were made for willow-1.10.0.tar.gz:

Publisher: publish.yml on wagtail/Willow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file willow-1.10.0-py3-none-any.whl.

File metadata

  • Download URL: willow-1.10.0-py3-none-any.whl
  • Upload date:
  • Size: 119.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for willow-1.10.0-py3-none-any.whl
Algorithm Hash digest
SHA256 26861dbacc9584f5d4566de7d31c092437225abc4b1978fa9ac44a433200f938
MD5 a2323d44eea4e84ed70b4e86a0bebaf4
BLAKE2b-256 34a1d380e90da1306d53fff9d1cac17d80acb7aca9679a2cb4f0f8459239c1bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for willow-1.10.0-py3-none-any.whl:

Publisher: publish.yml on wagtail/Willow

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 Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page