Home

Awesome

JPEG-LS plugin for Python Pillow

Build status

A plugin for the Python Pillow imaging library for the JPEG-LS codec, based on the Charls JPEG-LS implemetation. Python bindings implemented using pybind11.

Available on the Python Package Index

Usage

pip install pillow-jpls

With Pillow

import pillow_jpls
from PIL import Image
from io import BytesIO

img = Image.open("image.jls")
img.save("image_copy.jls)

# Saving to a buffer
buffer = BytesIO()
img.save(buffer, "JPEG-LS")

Options

The encoder supports the following options. See the specification for details, and the tests for example usage.

Build

The build is driven by Scikit Build Core. cibuildwheel is used to generate packages using Github Actions, and C++ dependencies are satisfied by conan using cmake-conan.

pip install build
python -m build

Build without conan

To use system dependencies instead of using conan:

python -m build -C cmake.args="--preset sysdeps"
pip install dist/*.whl

Note that wheels created this way are unlikely to be portable and are suitable only for local use. A Dockerfile is provided in the root of the repository to install the prerequisites, see also the CI job that builds a wheel using only system dependencies.

Tests

A suite of tests covering the applicable conformance tests from the specification is provided.

pip install -r requirements.txt
pytest -v test

Limitations

16 bit multichannel images are not supported, as these are not supported in Pillow. 16bit greyscale images are supported, however.

References