Imagecodecs is a Python library that provides block-oriented, in-memory buffer transformation, compression, and decompression functions for use in the tifffile, czifile, and other scientific imaging modules.
Decode and/or encode functions are currently implemented for Zlib DEFLATE, ZStandard, Blosc, LZMA, BZ2, LZ4, LZW, LZF, ZFP, NPY, PNG, WebP, JPEG 8-bit, JPEG 12-bit, JPEG SOF3, JPEG LS, JPEG 2000, JPEG XR, PackBits, Packed Integers, Delta, XOR Delta, Floating Point Predictor, and Bitorder reversal.
Author: | Christoph Gohlke |
---|---|
Organization: | Laboratory for Fluorescence Dynamics. University of California, Irvine |
License: | 3-clause BSD |
Version: | 2019.4.20 |
This release has been tested with the following requirements and dependencies (other versions may work):
- CPython 2.7.15, 3.5.4, 3.6.8, 3.7.3, 64-bit
- Numpy 1.15.4
- Cython 0.29.7
- zlib 1.2.11
- lz4 1.9.0
- zstd 1.4.0
- blosc 1.16.3
- bzip2 1.0.6
- xz liblzma 5.2.4
- liblzf 3.6
- libpng 1.6.36
- libwebp 1.0.2
- libjpeg-turbo 2.0.2 (8 and 12-bit)
- charls-2.0.0
- openjpeg 2.3.1
- jxrlib 0.2.1
- zfp 0.5.4
- lcms 2.9
Required for testing:
- tifffile 2019.3.18
- czifile 2019.2.22
- scikit-image 0.14.2
- python-blosc 1.7.0
- python-lz4 2.1.2
- python-zstd 1.3.8
- python-lzf 0.2.4
- backports.lzma 0.0.13
Imagecodecs is currently developed, built, and tested on Windows only.
The API is not stable yet and might change between revisions.
Works on little-endian platforms only.
Python 2.7 and 32-bit are deprecated.
The Microsoft Visual C++ Redistributable Packages are required on Windows.
Refer to the imagecodecs/licenses folder for 3rd party library licenses.
This software is based in part on the work of the Independent JPEG Group.
This software includes modified versions of dcm2niix's jpg_0XC3.cpp and openjpeg's color.c.
To install the requirements for building imagecodecs from source code on current Debian based Linux distributions, run:
$ sudo apt-get install build-essential python3-dev cython3
python3-setuptools python3-pip python3-wheel python3-numpy
libz-dev libblosc-dev liblzma-dev liblz4-dev libzstd-dev libpng-dev
libwebp-dev libbz2-dev libopenjp2-7-dev libjpeg62-turbo-dev libjxr-dev
liblcms2-dev libtiff-dev
The imagecodecs package can be challenging to build from source code. Consider using the imagecodecs-lite package instead, which does not depend on external third-party C libraries and provides a subset of image codecs for the tifffile library: LZW, PackBits, Delta, XOR Delta, Packed Integers, Floating Point Predictor, and Bitorder reversal.
Other Python packages providing imaging or compression codecs:
- numcodecs
- Python zlib
- Python bz2
- Python lzma
- python-snappy
- python-brotli
- python-lzo
- python-lzw
- packbits
- fpzip
- 2019.4.20
- Fix setup requirements.
- 2019.2.22
- Pass 2610 tests. Move codecs without 3rd-party C library dependencies to imagecodecs_lite.
- 2019.2.20
- Rebuild with updated dependencies.
- 2019.1.20
- Add more pixel formats to JPEG XR codec. Add JPEG XR encoder.
- 2019.1.14
- Add ZFP codecs via zfp library (WIP). Add numpy NPY and NPZ codecs. Fix some static codechecker errors.
- 2019.1.1
- Update copyright year. Do not install package if Cython extension fails to build. Fix compiler warnings.
- 2018.12.16
- Reallocate LZW buffer on demand. Ignore integer type output arguments for codecs returning images.
- 2018.12.12
- Enable decoding of subsampled J2K images via conversion to RGB. Enable decoding of large JPEG using patched libjpeg-turbo. Switch to Cython 0.29, language_level=3.
- 2018.12.1
- Add J2K encoder (WIP). Use ZStd content size 1 MB if it cannot be determined. Use logging.warning instead of warnings.warn or print.
- 2018.11.8
- Decode LSB style LZW. Fix last byte not written by LZW decoder (bug fix). Permit unknown colorspaces in JPEG codecs (e.g. CFA used in TIFF).
- 2018.10.30
- Add JPEG 8-bit and 12-bit encoders. Improve color space handling in JPEG codecs.
- 2018.10.28
- Rename jpeg0xc3 to jpegsof3. Add JPEG LS codec via libcharls. Fix missing alpha values in jxr_decode. Fix decoding JPEG SOF3 with multiple DHTs.
- 2018.10.22
- Add Blosc codecs via libblosc.
- 2018.10.21
- Builds on Ubuntu 18.04 WSL. Include liblzf in srcdist. Do not require CreateDecoderFromBytes patch to jxrlib.
- 2018.10.18
- Improve jpeg_decode wrapper.
- 2018.10.17
- Add JPEG SOF3 decoder based on jpg_0XC3.cpp.
- 2018.10.10
- Add PNG codecs via libpng. Add option to specify output colorspace in JPEG decoder. Fix Delta codec for floating point numbers. Fix XOR Delta codecs.
- 2018.9.30
- Add LZF codecs via liblzf.
- 2018.9.22
- Add WebP codecs via libwebp.
- 2018.8.29
- Add PackBits encoder.
- 2018.8.22
- Add link library version information. Add option to specify size of LZW buffer. Add JPEG 2000 decoder via openjpeg. Add XOR Delta codec.
- 2018.8.16
- Link to libjpeg-turbo. Support Python 2.7 and Visual Studio 2008.
- 2018.8.10
- Initial alpha release. Add LZW, PackBits, PackInts and FloatPred decoders from tifffile.c module. Add JPEG and JPEG XR decoders from czifile.pyx module.