pylibjpeg-openjpeg 2.5.0


pip install pylibjpeg-openjpeg

  Latest version

Released: Aug 19, 2025

Project Links

Meta
Author: pylibjpeg-openjpeg contributors
Maintainer: scaramallion
Requires Python: >=3.9,<4.0

Classifiers

Development Status
  • 5 - Production/Stable

Intended Audience
  • Developers
  • Healthcare Industry
  • Science/Research

License
  • OSI Approved :: MIT License

Natural Language
  • English

Operating System
  • OS Independent

Programming Language
  • Python :: 3
  • Python :: 3.9
  • Python :: 3.10
  • Python :: 3.11
  • Python :: 3.12
  • Python :: 3.13
  • Python :: 3.14

Topic
  • Scientific/Engineering :: Medical Science Apps.
  • Software Development :: Libraries

Build status Test coverage PyPI versions Python versions Code style: black

pylibjpeg-openjpeg

A Python 3.8+ wrapper for openjpeg, with a focus on use as a plugin for pylibjpeg.

Linux, OSX and Windows are all supported.

Installation

Dependencies

NumPy

Installing the current release

python -m pip install -U pylibjpeg-openjpeg

Installing the development version

Make sure Python, Git and CMake are installed. For Windows, you also need to install Microsoft's C++ Build Tools.

git clone --recurse-submodules https://github.com/pydicom/pylibjpeg-openjpeg
python -m pip install pylibjpeg-openjpeg

Supported JPEG Formats

Decoding

ISO/IEC Standard ITU Equivalent JPEG Format
15444-1 T.800 JPEG 2000

Encoding

Encoding of NumPy ndarrays is supported for the following:

  • Array dtype: bool, uint8, int8, uint16, int16, uint32 and int32 (1-24 bit-depth only)
  • Array shape: (rows, columns) and (rows, columns, planes)
  • Number of rows/columns: up to 65535
  • Number of planes: 1, 3 or 4

Transfer Syntaxes

UID Description
1.2.840.10008.1.2.4.90 JPEG 2000 Image Compression (Lossless Only)
1.2.840.10008.1.2.4.91 JPEG 2000 Image Compression
1.2.840.10008.1.2.4.201 High-Throughput JPEG 2000 Image Compression (Lossless Only)
1.2.840.10008.1.2.4.202 High-Throughput JPEG 2000 with RPCL Options Image Compression (Lossless Only)
1.2.840.10008.1.2.4.203 High-Throughput JPEG 2000 Image Compression

Usage

With pylibjpeg and pydicom

from pydicom import dcmread
from pydicom.data import get_testdata_file

ds = dcmread(get_testdata_file('JPEG2000.dcm'))
arr = ds.pixel_array

Standalone JPEG decoding

You can also decode JPEG 2000 images to a numpy ndarray:

from openjpeg import decode

with open('filename.j2k', 'rb') as f:
    # Returns a numpy array
    arr = decode(f)

# Or simply...
arr = decode('filename.j2k')

Standalone JPEG encoding

Lossless encoding of RGB with multiple-component transformation:

import numpy as np
from openjpeg import encode_array

arr = np.random.randint(low=0, high=65536, size=(100, 100, 3), dtype="uint8")
encode_array(arr, photometric_interpretation=1)  # 1: sRGB

Lossy encoding of a monochrome image using compression ratios:

import numpy as np
from openjpeg import encode_array

arr = np.random.randint(low=-2**15, high=2**15, size=(100, 100), dtype="int8")
# You must determine your own values for `compression_ratios`
#   as these are for illustration purposes only
encode_array(arr, compression_ratios=[5, 2])

Lossy encoding of a monochrome image using peak signal-to-noise ratios:

import numpy as np
from openjpeg import encode_array

arr = np.random.randint(low=-2**15, high=2**15, size=(100, 100), dtype="int8")
# You must determine your own values for `signal_noise_ratios`
#   as these are for illustration purposes only
encode_array(arr, signal_noise_ratios=[50, 80, 100])

See the docstring for the encode_array() function for full details.

Wheel compatibility matrix

Platform CPython 3.9 CPython 3.10 CPython 3.11 CPython 3.12 CPython 3.13 CPython 3.14
macosx_10_13_x86_64
macosx_10_9_x86_64
macosx_11_0_arm64
manylinux2014_aarch64
manylinux2014_x86_64
manylinux_2_17_aarch64
manylinux_2_17_x86_64
manylinux_2_28_aarch64
win32
win_amd64

Files in release

pylibjpeg_openjpeg-2.5.0-cp310-cp310-macosx_10_9_x86_64.whl (475.7KiB)
pylibjpeg_openjpeg-2.5.0-cp310-cp310-macosx_11_0_arm64.whl (422.6KiB)
pylibjpeg_openjpeg-2.5.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (1.8MiB)
pylibjpeg_openjpeg-2.5.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.8MiB)
pylibjpeg_openjpeg-2.5.0-cp310-cp310-win32.whl (294.1KiB)
pylibjpeg_openjpeg-2.5.0-cp310-cp310-win_amd64.whl (342.4KiB)
pylibjpeg_openjpeg-2.5.0-cp311-cp311-macosx_10_9_x86_64.whl (476.8KiB)
pylibjpeg_openjpeg-2.5.0-cp311-cp311-macosx_11_0_arm64.whl (423.2KiB)
pylibjpeg_openjpeg-2.5.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (1.8MiB)
pylibjpeg_openjpeg-2.5.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.9MiB)
pylibjpeg_openjpeg-2.5.0-cp311-cp311-win32.whl (293.7KiB)
pylibjpeg_openjpeg-2.5.0-cp311-cp311-win_amd64.whl (342.4KiB)
pylibjpeg_openjpeg-2.5.0-cp312-cp312-macosx_10_13_x86_64.whl (474.4KiB)
pylibjpeg_openjpeg-2.5.0-cp312-cp312-macosx_11_0_arm64.whl (422.6KiB)
pylibjpeg_openjpeg-2.5.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (1.8MiB)
pylibjpeg_openjpeg-2.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.9MiB)
pylibjpeg_openjpeg-2.5.0-cp312-cp312-win32.whl (293.6KiB)
pylibjpeg_openjpeg-2.5.0-cp312-cp312-win_amd64.whl (342.4KiB)
pylibjpeg_openjpeg-2.5.0-cp313-cp313-macosx_10_13_x86_64.whl (473.9KiB)
pylibjpeg_openjpeg-2.5.0-cp313-cp313-macosx_11_0_arm64.whl (422.3KiB)
pylibjpeg_openjpeg-2.5.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (1.8MiB)
pylibjpeg_openjpeg-2.5.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.9MiB)
pylibjpeg_openjpeg-2.5.0-cp313-cp313-win32.whl (293.5KiB)
pylibjpeg_openjpeg-2.5.0-cp313-cp313-win_amd64.whl (342.4KiB)
pylibjpeg_openjpeg-2.5.0-cp314-cp314-macosx_10_13_x86_64.whl (473.6KiB)
pylibjpeg_openjpeg-2.5.0-cp314-cp314-macosx_11_0_arm64.whl (422.5KiB)
pylibjpeg_openjpeg-2.5.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (1.8MiB)
pylibjpeg_openjpeg-2.5.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.9MiB)
pylibjpeg_openjpeg-2.5.0-cp314-cp314-win32.whl (301.9KiB)
pylibjpeg_openjpeg-2.5.0-cp314-cp314-win_amd64.whl (352.8KiB)
pylibjpeg_openjpeg-2.5.0-cp39-cp39-macosx_10_9_x86_64.whl (475.7KiB)
pylibjpeg_openjpeg-2.5.0-cp39-cp39-macosx_11_0_arm64.whl (422.6KiB)
pylibjpeg_openjpeg-2.5.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (1.8MiB)
pylibjpeg_openjpeg-2.5.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.8MiB)
pylibjpeg_openjpeg-2.5.0-cp39-cp39-win32.whl (294.2KiB)
pylibjpeg_openjpeg-2.5.0-cp39-cp39-win_amd64.whl (342.4KiB)
pylibjpeg_openjpeg-2.5.0.tar.gz (2.1MiB)
Extras: None
Dependencies:
numpy (<3.0,>=2.0)