On Windows you may encounter the following error during installation:
conans.errors.ConanException: 'settings.compiler' value not defined
This means that you need to install a C compiler and configure Conan so that it knows which
compiler to use. See https://github.com/anibali/pywebp/issues/20 for more details.
Requirements
Python 3.8+
Usage
importwebp
Simple API
# Save an imagewebp.save_image(img,'image.webp',quality=80)# Load an imageimg=webp.load_image('image.webp','RGBA')# Save an animationwebp.save_images(imgs,'anim.webp',fps=10,lossless=True)# Load an animationimgs=webp.load_images('anim.webp','RGB',fps=10)
If you prefer working with numpy arrays, use the functions imwrite, imread, mimwrite,
and mimread instead.
Advanced API
# Encode a PIL image to WebP in memory, with encoder hintspic=webp.WebPPicture.from_pil(img)config=WebPConfig.new(preset=webp.WebPPreset.PHOTO,quality=70)buf=pic.encode(config).buffer()# Read a WebP file and decode to a BGR numpy arraywithopen('image.webp','rb')asf:webp_data=webp.WebPData.from_buffer(f.read())arr=webp_data.decode(color_mode=WebPColorMode.BGR)# Save an animationenc=webp.WebPAnimEncoder.new(width,height)timestamp_ms=0forimginimgs:pic=webp.WebPPicture.from_pil(img)enc.encode_frame(pic,timestamp_ms)timestamp_ms+=250anim_data=enc.assemble(timestamp_ms)withopen('anim.webp','wb')asf:f.write(anim_data.buffer())# Load an animationwithopen('anim.webp','rb')asf:webp_data=webp.WebPData.from_buffer(f.read())dec=webp.WebPAnimDecoder.new(webp_data)forarr,timestamp_msindec.frames():# `arr` contains decoded pixels for the frame# `timestamp_ms` contains the _end_ time of the framepass
Features
Picture encoding/decoding
Animation encoding/decoding
Automatic memory management
Simple API for working with PIL.Image objects
Not implemented
Encoding/decoding still images in YUV color mode
Advanced muxing/demuxing (color profiles, etc.)
Expose all useful fields
Developer notes
Setting up
Install mamba and conda-lock. The easiest way to do this is by installing
Mambaforge and then
running mamba install conda-lock.
Create and activate the Conda environment:
$ conda-lockinstall-nwebp
$ mambaactivatewebp
Install PyPI dependencies:
$ pdminstall-G:all
Running tests
$ pytesttests/
Cutting a new release
Ensure that tests are passing and everything is ready for release.
Create and push a Git tag:
$ gittagv0.1.6
$ gitpush--tags
Download the artifacts from GitHub Actions, which will include the source distribution tarball and binary wheels.
Create a new release on GitHub from the tagged commit and upload the packages as attachments to the release.
Also upload the packages to PyPI using Twine:
$ twineuploadwebp-*.tar.gzwebp-*.whl
Bump the version number in pyproject.toml and create a commit, signalling the start of development on the next version.
These files should also be added to a GitHub release.
Known issues
An animation where all frames are identical will "collapse" in on itself,
resulting in a single frame. Unfortunately, WebP seems to discard timestamp
information in this case, which breaks webp.load_images when the FPS
is specified.
There are currently no 32-bit binaries of libwebp uploaded to Conan Center. If you are running
32-bit Python, libwebp will be built from source.