$npx skillfedfor your agent

Willow

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

With conditionsPyPI GraphicsReleased Oct 2025966.0K downloads / mopermissive licensePure Python

Decision gist · record as of 2026-08-14

pure-Python wheel — willow-1.12.0-py3-none-any.whl
v1.12.0 · released 2025-10-26 · Python >=3.10 · 2 runtime deps: filetype, defusedxml

Yes, if you need a unified image API and want to avoid backend lock-in. Install friction is minimal, maintenance is active, and there are no known vulnerabilities. The permissive license poses no restriction. Only caveat: you must separately install at least one of Pillow, Wand, or OpenCV—Willow is a wrapper, not a standalone image library.AI-flagged interpretation of the facts on this page — verify before relying

Before you install

  • Requires Python 3.10 or later; at least one of Pillow, Wand, or OpenCV must be installed for actual image processing (not bundled).
  • Low friction: pure Python wheel with only two runtime dependencies (filetype and defusedxml).
  • Actively maintained with recent commits and a stable release history since 2014.

License · maintenance · safety

permissive license (permissive) — Permissive BSD license allows commercial and private use with minimal restrictions, making it suitable for most projects without legal friction.

last release 2025-10-26 (292 days) · last repo commit 2026-07-12 · 282 stars

0 known vulnerabilities (OSV.dev, 2026-08-14) · 965,992 downloads/mo, #4,621 on PyPI

Verify before relying

from willow.image import Image

with open('test.png', 'rb') as f:
    img = Image.open(f)
    img = img.resize((100, 100))
    with open('output.png', 'wb') as out:
        img.save_as_png(out)
  • Whether Pillow, Wand, or OpenCV are optional or required dependencies (fact sheet lists only filetype and defusedxml as runtime deps).
  • Performance characteristics when converting between different backend libraries.
  • Whether all listed operations work reliably across all supported Python versions (3.10–3.14).
Same gist for agents: .md · .json

What it is and what it does

Willow is a wrapper library that unifies the APIs of Pillow, Wand, and OpenCV into a single interface, letting you work with images without needing to know which backend is available. It automatically converts images between libraries when an operation requires a specific backend—for example, face detection uses OpenCV even if you loaded the image with Pillow. The library supports basic image operations (resize, crop, rotate, format conversion) and more specialized tasks like face and feature detection.

It's written in pure Python and supports modern Python versions (3.10–3.14). You install it with low friction—only two small runtime dependencies—and then choose which image backends to install separately based on your needs. This makes it useful in environments where you want flexibility about which image library to use, or where you need to combine capabilities from multiple libraries in a single codebase.

Use it for

  • Build a thumbnail generation service that works with Pillow when available but falls back to Wand on systems where Pillow isn't installed.
  • Detect faces in user-uploaded photos by automatically routing to OpenCV when needed, without forcing users to learn OpenCV's API.
  • Convert between image formats (PNG, JPEG, WebP, AVIF, HEIC) using a consistent API regardless of which backend is installed.
  • Process animated GIFs with frame counting and manipulation across different backends.
  • Rotate and crop images with a single codebase that works across Pillow, Wand, and OpenCV without conditional imports.

Worth the install?

AI-flagged interpretation of the facts on this page. Verify before relying on it.

With conditions

Yes, if you need a unified image API and want to avoid backend lock-in.

Install friction is minimal, maintenance is active, and there are no known vulnerabilities. The permissive license poses no restriction. Only caveat: you must separately install at least one of Pillow, Wand, or OpenCV—Willow is a wrapper, not a standalone image library.

Install

willow on PyPI

Before you install

Low friction: pure Python wheel with only two runtime dependencies (filetype and defusedxml). Actively maintained with recent commits and a stable release history since 2014.

Requires Python 3.10 or later; at least one of Pillow, Wand, or OpenCV must be installed for actual image processing (not bundled).

License in practice

Permissive BSD license allows commercial and private use with minimal restrictions, making it suitable for most projects without legal friction.

Quickstart

from willow.image import Image

with open('test.png', 'rb') as f:
    img = Image.open(f)
    img = img.resize((100, 100))
    with open('output.png', 'wb') as out:
        img.save_as_png(out)

Verify before relying

  • Whether Pillow, Wand, or OpenCV are optional or required dependencies (fact sheet lists only filetype and defusedxml as runtime deps).
  • Performance characteristics when converting between different backend libraries.
  • Whether all listed operations work reliably across all supported Python versions (3.10–3.14).

Package facts

Licensepermissive license permissive
Python supportSupports the current Python release >=3.10
Install frictionLow. Pure-Python wheel
Runtime dependencies
2 packages
filetypedefusedxml
MaintenanceActively maintained 292 days since the last release
Last repo commit
First released
Downloads965,992 / month, #4,621 on PyPI 30-day window, as of 2026-08-14
Known vulnerabilitiesNone known OSV.dev, checked 2026-08-14
Classifiers
Development Status :: 5 - Production/StableIntended Audience :: DevelopersLicense :: OSI Approved :: BSD LicenseOperating System :: OS IndependentProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3 :: OnlyProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Topic :: Multimedia :: GraphicsTopic :: Multimedia :: Graphics :: Graphics Conversion

Evidence: willow-1.12.0-py3-none-any.whl

Tags

Capabilities
image manipulation unified apipillow wand opencv wrapperface detection image libraryimage resize crop convertmulti-backend image processinganimated gif supportimage format conversion
Topics
image-processingmulti-backendface-detection
PyPI keywords
Imaging

Let your AI agent find packages like this

Example. Real query, live index.

You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.

wish › “image manipulation unified api”

  • WillowWillow provides a unified API for image manipulation across Pillow,…
  • pyobjc-framework-QuartzProvides Python bindings to macOS Quartz frameworks (CoreGraphics,…
  • pilkitPILKit provides a collection of image processors and utilities that…

Give your agent the search over MCP, or paste the wish link into any chat.

More Graphics packages

pillow Worth it
PyPI · Graphics · released Jul 2026

Pillow adds image processing capabilities to Python, providing file format support, efficient pixel data handling, and image manipulation operations.

Install it if you need to work with images in Python—it is the de facto standard for this task.

MIT-CMUcompiled wheel · 3.10+
547.1Mdownloads / mo
fonttools Worth it
PyPI · Text Processing · released May 2026

fonttools manipulates font files in multiple formats (TrueType, OpenType, AFM, Type 1, Mac-specific) and includes TTX, a tool to convert fonts to and from XML text format.

Install it if you need to read, write, or manipulate fonts programmatically or via the TTX command-line tool.

permissive licensepure Python · 3.10+
235.9Mdownloads / mo
matplotlib-inline Worth it
PyPI · Graphics · released May 2026

Enables matplotlib figures to display inline directly within Jupyter notebooks and IPython environments instead of in separate windows.

BSD-3-Clausepure Python · 3.9+
130.5Mdownloads / mo
pymupdf Worth it
PyPI · Libraries · released Aug 2026

PyMuPDF extracts, renders, converts, and manipulates PDF and other document formats (XPS, EPUB, images, Office files via Pro) with high performance, providing text, tables, images, and metadata with precise layout information.

The AGPL license requires careful review if you are building proprietary software—commercial licensing is available from Artifex.

AGPLcompiled wheel · 3.10+
114.9Mdownloads / mo
pypdfium2 Worth it
PyPI · Libraries · released Aug 2026

pypdfium2 is a Python binding to PDFium that enables PDF rendering, inspection, manipulation, and creation through a ctypes interface to Google's PDFium library.

Install it if you need PDF rendering, inspection, or manipulation in Python; the medium install friction is offset by comprehensive platform support.

permissive licensecompiled wheel · 3.6+
76.9Mdownloads / mo
altair Worth it
PyPI · Graphics · released Jun 2026

Altair is a declarative Python library for creating interactive statistical visualizations by writing simple, readable code that compiles to Vega-Lite specifications.

BSD-3-Clausepure Python · 3.10+
54.5Mdownloads / mo

See also imutils · pilkit · python-resize-image · sorl-thumbnail · pillow-heif · pi-heif · pillow-jxl-plugin · pillow-avif-plugin · pilgram