pyjpegls
JPEG-LS for Python via CharLS C++ Library
Decision gist · record as of 2026-08-14
Yes, if you need lossless JPEG-LS compression in Python and are comfortable with a package in aging maintenance. The library is stable (Production/Stable classifier), has no known vulnerabilities, and pre-built wheels make installation straightforward on common platforms. However, verify that the fork remains compatible with your use case and that the 655-day release gap does not signal abandonment; check the repository's recent activity and open issues before committing to a production dependency.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires numpy; C++ extension wheels are available for Python 3.9–3.13 on common platforms (Windows, macOS, Linux).
- Medium install friction due to compiled C++ extension; pre-built wheels are available for Python 3.9, 3.10, 3.11, 3.12, and 3.13 on Windows, macOS (x86_64 and ARM64), and Linux (x86_64 and aarch64), so installation is straightforward on supported platforms.
- Maintenance status is aging—last release was 655 days ago, though the repository is not archived and received a commit on 2025-12-07.
License · maintenance · safety
MIT (permissive) — MIT license is permissive; you may use, modify, and distribute this package freely in commercial and private projects with minimal restrictions.
last release 2024-10-28 (655 days) · last repo commit 2025-12-07 · 1 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 119,065 downloads/mo, #12,091 on PyPI
Alternatives
Verify before relying
import numpy
import pyjpegls
# Compress a numpy array to bytes
data = numpy.zeros((10, 10, 3), dtype=numpy.uint8)
compressed = pyjpegls.encode(data)
# Decompress back to numpy array
decompressed = pyjpegls.decode(compressed)- Whether the package is actively maintained or if the 655-day gap since last release indicates stalled development despite recent repo activity.
- Performance characteristics and compression ratio compared to PNG, JPEG 2000, or other lossless formats in typical use.
- Whether the fork from the original CharPyLS repository has addressed specific bugs or limitations beyond keeping it installable.
What it is and what it does
pyjpegls is a Python wrapper around the CharLS C++ library that implements the JPEG-LS lossless image compression standard (ISO-14495-1/ITU-T.87). It provides encode() and decode() functions to compress numpy arrays to byte buffers and decompress them back losslessly. The package was forked from the unmaintained CharPyLS project to maintain compatibility with modern Python versions and add fixes.
The typical workflow is to read image data into a numpy array, call encode() to compress it to a buffer, and call decode() to restore the original array bit-for-bit. JPEG-LS is designed for low-complexity lossless compression and is often used in medical imaging and scientific applications where data fidelity is critical. The package depends only on numpy at runtime; Cython and Pillow are build-time or test-time dependencies.
Use it for
- Compress greyscale or RGB image data in memory for storage or transmission when lossless fidelity is required.
- Integrate JPEG-LS compression into medical imaging pipelines where the standard is widely used.
- Benchmark or compare JPEG-LS compression ratios and speed against other lossless formats in scientific research.
- Reduce memory footprint of large image datasets by compressing numpy arrays before serialization or caching.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you need lossless JPEG-LS compression in Python and are comfortable with a package in aging maintenance.
The library is stable (Production/Stable classifier), has no known vulnerabilities, and pre-built wheels make installation straightforward on common platforms. However, verify that the fork remains compatible with your use case and that the 655-day release gap does not signal abandonment; check the repository's recent activity and open issues before committing to a production dependency.
Install
pyjpegls on PyPI
Before you install
Medium install friction due to compiled C++ extension; pre-built wheels are available for Python 3.9, 3.10, 3.11, 3.12, and 3.13 on Windows, macOS (x86_64 and ARM64), and Linux (x86_64 and aarch64), so installation is straightforward on supported platforms. Maintenance status is aging—last release was 655 days ago, though the repository is not archived and received a commit on 2025-12-07.
Requires numpy; C++ extension wheels are available for Python 3.9–3.13 on common platforms (Windows, macOS, Linux).
License in practice
MIT license is permissive; you may use, modify, and distribute this package freely in commercial and private projects with minimal restrictions.
Quickstart
import numpy
import pyjpegls
# Compress a numpy array to bytes
data = numpy.zeros((10, 10, 3), dtype=numpy.uint8)
compressed = pyjpegls.encode(data)
# Decompress back to numpy array
decompressed = pyjpegls.decode(compressed)
Verify before relying
- Whether the package is actively maintained or if the 655-day gap since last release indicates stalled development despite recent repo activity.
- Performance characteristics and compression ratio compared to PNG, JPEG 2000, or other lossless formats in typical use.
- Whether the fork from the original CharPyLS repository has addressed specific bugs or limitations beyond keeping it installable.
Package facts
| License | MIT permissive |
| Python support | Supports the current Python release >=3.9 |
| Install friction | Medium. Platform-specific wheel |
| Runtime dependencies | 1 packagenumpy |
| Maintenance | Aging 655 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 119,065 / month, #12,091 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 5 - Production/StableLicense :: OSI Approved :: MIT LicenseNatural Language :: EnglishOperating System :: MacOSOperating System :: Microsoft :: WindowsOperating System :: POSIX :: LinuxProgramming Language :: PythonProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.9Programming Language :: Python :: Implementation :: CPythonTopic :: File FormatsTopic :: Scientific/Engineering :: Image ProcessingTopic :: Software Development :: Libraries |
Evidence: pyjpegls-1.5.1-cp310-cp310-macosx_10_9_x86_64.whl; pyjpegls-1.5.1-cp310-cp310-macosx_11_0_arm64.whl; pyjpegls-1.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; pyjpegls-1.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; pyjpegls-1.5.1-cp310-cp310-win_amd64.whl; pyjpegls-1.5.1-cp311-cp311-macosx_10_9_x86_64.whl; pyjpegls-1.5.1-cp311-cp311-macosx_11_0_arm64.whl; pyjpegls-1.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; pyjpegls-1.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; pyjpegls-1.5.1-cp311-cp311-win_amd64.whl; pyjpegls-1.5.1-cp312-cp312-macosx_10_13_x86_64.whl; pyjpegls-1.5.1-cp312-cp312-macosx_11_0_arm64.whl; pyjpegls-1.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; pyjpegls-1.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; pyjpegls-1.5.1-cp312-cp312-win_amd64.whl; pyjpegls-1.5.1-cp313-cp313-macosx_10_13_x86_64.whl; pyjpegls-1.5.1-cp313-cp313-macosx_11_0_arm64.whl; pyjpegls-1.5.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; pyjpegls-1.5.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; pyjpegls-1.5.1-cp313-cp313-win_amd64.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “lossless image compression”
- pyjpeglsEncodes and decodes image data using the JPEG-LS lossless compression…
- qoiA Python wrapper for the QOI (Quite OK Image) lossless image format…
- turbojpegPython bindings for libjpeg-turbo that provide lossless JPEG…
Give your agent the search over MCP, or paste the wish link into any chat.
More Libraries packages
urllib3 is an HTTP client library that provides thread-safe connection pooling, SSL/TLS verification, multipart file uploads, request retries, compression support, and proxy handling for Python applications.
Requests is a Python HTTP library that simplifies sending HTTP/1.1 requests with automatic handling of headers, authentication, cookies, and response parsing.
Pluggy provides a plugin system that lets you define hook specifications and register implementations to be called in sequence, enabling extensible Python applications without tight coupling.
Install it if you're building an extensible application or framework.
Provides parsing, arithmetic, and recurrence rule computation for dates and times, with timezone support and iCalendar RFC compliance.
Install it if you need to parse flexible date strings, compute relative dates, handle timezones, or work with recurrence rules—it's the de facto choice for these tasks.
Six provides utility functions to write Python code that runs on both Python 2.7 and Python 3.3+, smoothing over language differences between the two versions.
pytest is a testing framework that lets you write test functions using plain assert statements and automatically discovers and runs them, with detailed failure reporting.
See also pillow-jxl-plugin · pylibjpeg · pylibjpeg-openjpeg · pylibjpeg-libjpeg · pyoxipng · turbojpeg · qoi · PyTurboJPEG · pylzss · img2pdf