{"library":"pylibjpeg-libjpeg","title":"pylibjpeg-libjpeg","description":"pylibjpeg-libjpeg is a Python wrapper for the `libjpeg` C library, designed primarily to function as a plugin for the `pylibjpeg` framework, which in turn provides JPEG decoding capabilities for `pydicom`. It enables Python applications to decode various JPEG formats, including JPEG Baseline, Extended, Lossless (Process 14), JPEG-LS Lossless, and Lossy. The library is actively maintained, with the current version being 2.4.0, and typically sees updates for Python version compatibility and `libjpeg` upgrades every few months to a year.","language":"python","status":"active","last_verified":"Mon May 18","install":{"commands":["pip install pylibjpeg-libjpeg"],"cli":null},"imports":["from libjpeg import decode","import pydicom"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import pydicom\nfrom pydicom.data import get_testdata_file\nimport numpy # pylibjpeg-libjpeg returns numpy arrays\n\n# Ensure pylibjpeg-libjpeg is installed: pip install pylibjpeg-libjpeg\n# This makes it available as a plugin for pydicom through pylibjpeg\n\n# Load a DICOM file with JPEG-compressed pixel data\n# Requires 'pydicom-data' for test files, or use your own DICOM file\n# If you don't have test files, uncomment: pydicom.data.fetch_data_files()\ndicom_file_path = get_testdata_file('JPEG-LL.dcm') # Example: JPEG Lossless\n\nds = pydicom.dcmread(dicom_file_path)\n\n# Accessing .pixel_array will trigger decoding via pylibjpeg-libjpeg\n# if the transfer syntax is supported by the plugin.\npixel_array = ds.pixel_array\n\nprint(f\"DICOM file loaded: {dicom_file_path}\")\nprint(f\"Transfer Syntax UID: {ds.file_meta.TransferSyntaxUID}\")\nprint(f\"Pixel array shape: {pixel_array.shape}\")\nprint(f\"Pixel array dtype: {pixel_array.dtype}\")\nprint(f\"Type of decoded data: {type(pixel_array)}\")","lang":"python","description":"This quickstart demonstrates the primary use case of `pylibjpeg-libjpeg` as a plugin for `pydicom` to decode JPEG-compressed DICOM pixel data. Once installed, `pydicom` (via `pylibjpeg`) automatically discovers and uses `pylibjpeg-libjpeg` for supported JPEG transfer syntaxes.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-18","installed_version":"2.3.0","pypi_latest":"2.4.0","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":50,"avg_install_s":4.1,"avg_import_s":0.35,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pylibjpeg-libjpeg","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pylibjpeg-libjpeg","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.8,"import_time_s":0.26,"mem_mb":9.4,"disk_size":"98M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pylibjpeg-libjpeg","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pylibjpeg-libjpeg","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.9,"import_time_s":0.4,"mem_mb":10.4,"disk_size":"105M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pylibjpeg-libjpeg","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pylibjpeg-libjpeg","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.2,"import_time_s":0.43,"mem_mb":10.3,"disk_size":"93M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pylibjpeg-libjpeg","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pylibjpeg-libjpeg","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.7,"import_time_s":0.4,"mem_mb":10.1,"disk_size":"93M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pylibjpeg-libjpeg","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pylibjpeg-libjpeg","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.8,"import_time_s":0.27,"mem_mb":9.1,"disk_size":"108M"}]}}