Search code examples
pythonpython-imaging-libraryjpeg2000

Pillow and JPEG2000: decoder jpeg2k not available


I'm trying to set up Flask-IIIF to work with jp2-files, or JPEG2000. Right out of the box I get an error from the Pillow library: IOError: decoder jpeg2k not available

I've tried googling it, and one StackOverflow post told me to make sure libjpeg-dev and libjpeg8-dev are installed and up to date, but they were already installed. After making sure they were there, I did try to reinstall pillow without cache: pip install --no-cache-dir -I pillow

The environment is Docker, based on a 15.10 Ubuntu image. Python version is 2.7.10. Pillow version from pip freeze is 4.1.1

edit: I also tried the other suggestion of Python Image Library fails with message "decoder JPEG not available" - PIL:

sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib sudo ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib sudo ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/lib


Solution

  • Pillow needs the OpenJPEG library to decode JPEG2000 files. libjpeg only deals with regular JPEGs.

    See the note in the Pillow docs at the end of this section: http://pillow.readthedocs.io/en/latest/handbook/image-file-formats.html#jpeg-2000