A Python 3.8+ wrapper for Thomas Richter's libjpeg, with a focus on use as a plugin for pylibjpeg.
Linux, MacOS and Windows are all supported.
pip install pylibjpeg-libjpegMake sure Python and Git are installed. For Windows, you also need to install Microsoft's C++ Build Tools.
git clone --recurse-submodules https://github.com/pydicom/pylibjpeg-libjpeg
python -m pip install pylibjpeg-libjpeg| ISO/IEC Standard | ITU Equivalent | JPEG Format | 
|---|---|---|
| 10918 | T.81 | JPEG | 
| 14495 | T.87 | JPEG-LS | 
| 18477 | JPEG XT | 
Encoding of JPEG images is not currently supported
| UID | Description | 
|---|---|
| 1.2.840.10008.1.2.4.50 | JPEG Baseline (Process 1) | 
| 1.2.840.10008.1.2.4.51 | JPEG Extended (Process 2 and 4) | 
| 1.2.840.10008.1.2.4.57 | JPEG Lossless, Non-Hierarchical (Process 14) | 
| 1.2.840.10008.1.2.4.70 | JPEG Lossless, Non-Hierarchical, First-Order Prediction (Process 14 [Selection Value 1]) | 
| 1.2.840.10008.1.2.4.80 | JPEG-LS Lossless | 
| 1.2.840.10008.1.2.4.81 | JPEG-LS Lossy (Near-Lossless) Image Compression | 
from pydicom import dcmread
from pydicom.data import get_testdata_file
ds = dcmread(get_testdata_file('JPEG-LL.dcm'))
arr = ds.pixel_arrayYou can also decode JPEG images to a numpy ndarray:
from libjpeg import decode
with open('filename.jpg', 'rb') as f:
    # Returns a numpy array
    arr = decode(f.read())
# Or simply...
arr = decode('filename.jpg')