• Stars
    star
    274
  • Rank 150,274 (Top 3 %)
  • Language
    Python
  • License
    BSD 3-Clause "New...
  • Created about 10 years ago
  • Updated 29 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

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 libray is written in pure Python and support versions 3.8 3.9, 3.10 and 3.11.

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)
auto_orient()
save_as_jpeg(file, quality)
save_as_png(file)
save_as_gif(file)
save_as_webp(file, quality)
has_alpha() ✓*
has_animation() ✓* ✓*
get_pillow_image()
get_wand_image()
detect_features()
detect_faces(cascade_filename)

* Always returns False ** Always returns 1

More Repositories

1

wagtail

A Django content management system focused on flexibility and user experience
Python
17,837
star
2

bakerydemo

Next generation Wagtail demo, born in Reykjavik
Python
963
star
3

django-modelcluster

Django extension to allow working with 'clusters' of models as a single unit, independently of the database
Python
482
star
4

wagtail-localize

Translation plugin for Wagtail CMS
Python
226
star
5

wagtail-bakery

A set of helpers for baking your Django Wagtail site out as flat files.
Python
156
star
6

telepath

A library for exchanging data between Python and JavaScript
Python
139
star
7

wagtail-ai

Get help with your Wagtail content using AI superpowers.
Python
136
star
8

wagtail-autocomplete

An Autocomplete edit handler for selecting Pages, Snippets, and more.
Python
119
star
9

wagtail-personalisation

Rule-based personalisation for Wagtail CMS
Python
117
star
10

wagtail-generic-chooser

A toolkit for custom chooser popups in Wagtail
Python
116
star
11

queryish

A library for constructing queries on arbitrary data sources following Django's QuerySet API
Python
106
star
12

wagtailtrans

A Wagtail add-on for supporting multilingual sites
Python
104
star
13

wagtail-factories

Factory boy classes for wagtail
Python
101
star
14

wagtail-transfer

Content transfer for Wagtail
Python
88
star
15

docker-wagtail-develop

Shell
74
star
16

wagtail.org

Wagtail’s official marketing website
Python
66
star
17

rfcs

Wagtail RFCs
45
star
18

wagtail-review

A Wagtail extension for gathering annotations and feedback on pages before publication
Python
43
star
19

wagtail-airtable

Airtable import and export support for Wagtail pages and Django models.
Python
43
star
20

gsoc

Resources, activity, discussions for Wagtail’s participation to Google Summer of Code
Python
39
star
21

wagtail-live

High speed publishing from messaging apps to a Wagtail live blog. A GSoC 2021 project.
Python
37
star
22

nextjs-loves-wagtail

Tutorial: Next.js ❤️ Wagtail
Python
36
star
23

vagrant-wagtail-develop

A script to painlessly set up a Vagrant environment for development of Wagtail
Shell
36
star
24

wagtail-gitpod

Launch a ready-to-code Wagtail development environment with a single click.
30
star
25

guide

A website to teach Wagtail CMS to content editors, moderators and administrators.
Python
30
star
26

sphinx-wagtail-theme

Sphinx theme for Wagtail
SCSS
29
star
27

wagtail-streamfield-migration-toolkit

Python
25
star
28

wagtail-whoosh

Search backend for Wagtail CMS using Whoosh engine.
Python
24
star
29

outreachy

Resources, activity, discussions for Wagtail’s participation to Outreachy
20
star
30

areweheadlessyet

Are we headless yet?
TypeScript
19
star
31

wagtail-vector-index

Store Wagtail pages & Django models as embeddings in vector databases
Python
18
star
32

cookiecutter-wagtail-package

A cookiecutter template for building Wagtail add-on packages
Python
17
star
33

django-permissionedforms

A Django extension for creating forms that vary according to user permissions
Python
12
star
34

roadmap

Wagtail public roadmap
9
star
35

stylelint-config-wagtail

Shareable stylelint config for CSS and SCSS, following Wagtail’s code style.
JavaScript
9
star
36

wagtail-newsletter

Send email newsletters based on Wagtail content
Python
9
star
37

wagtail-multiple-chooser-panel

An InlinePanel variant allowing multiple items to be quickly selected
JavaScript
7
star
38

wagtail-localize-git

Translate Wagtail content using a git repository and PO files
Python
6
star
39

gitpod-wagtail-develop

Dockerfile
6
star
40

eslint-config-wagtail

Shareable ESLint config for Wagtail, based on airbnb/javascript.
JavaScript
6
star
41

wagtail-review-ui

Frontend UI for adding comments on Wagtail pages
TypeScript
4
star
42

wagtail-editable-help

Make help text editable in the Wagtail admin
Python
3
star
43

wagtail-hallo

Wagtail's legacy Hallo.js richtext editor
Python
3
star
44

accessibility

Documentation relating to accessibility efforts in Wagtail
HTML
3
star
45

workshop

2
star
46

how-to-run-a-wagtail-space

Advice for anyone running a community Wagtail event
2
star
47

gsod

Resources, activity, discussions for Wagtail’s participation to Google Season of Docs
2
star
48

telepath-unpack

JavaScript library for unpacking values that have been packed with telepath
JavaScript
2
star
49

your-first-wagtail-site

The solution for Wagtail’s official getting started tutorial
Python
1
star