qoi
A simpler wrapper around qoi (https://github.com/phoboslab/qoi)
Decision gist · record as of 2026-08-14
Yes, if you work with numpy arrays and need faster lossless image I/O than PNG. The package is stable, well-maintained, has no security issues, and installs easily on modern Python. Skip it if compression ratio is your primary concern or if you need formats other than lossless/lossy RGB.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires numpy; image data must be a numpy array in HWC (height, width, channel) ordering.
- Prebuilt wheels available for modern Python versions (3.10–3.13) across macOS, Linux, and Windows, reducing compile friction.
- Package is aging (564 days since last release) but remains actively maintained; no known security issues.
License · maintenance · safety
MIT (permissive) — MIT license permits unrestricted use, modification, and distribution in both open-source and proprietary projects with minimal obligations.
last release 2025-01-27 (564 days) · last repo commit 2026-01-01 · 83 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 212,048 downloads/mo, #9,468 on PyPI
Alternatives
Verify before relying
import numpy as np
import qoi
rgb = np.random.randint(0, 255, size=(224, 244, 3), dtype=np.uint8)
qoi.write('/tmp/img.qoi', rgb)
rgb_read = qoi.read('/tmp/img.qoi')- Whether the 10x encoding and 5x decoding speedups over PNG hold consistently across different image types and sizes in real-world workflows.
- Performance characteristics of the lossy mode (downscaling trick) on typical computer-vision pipelines.
- GIL-free multithreading behavior and scalability limits with concurrent.futures or similar patterns.
What it is and what it does
QOI is a Python wrapper around the Quite OK Image format, a lossless image codec designed for speed. It reads and writes images as numpy arrays, making it a natural fit for computer-vision and scientific-computing workflows. The package depends only on numpy and compiles to platform-specific wheels, avoiding build friction on most systems.
The format trades some compression efficiency for encoding and decoding speed: lossless QOI is typically 4–20x faster to encode and 1.5–6x faster to decode than PNG, though file sizes are slightly larger. The package also supports a lossy mode via downscaling, which can achieve JPEG-like compression ratios at 5–10x faster encode and 7–8x faster decode speeds. Multi-threaded encoding and decoding are supported without GIL contention, making it suitable for batch processing and high-throughput image pipelines.
Use it for
- Real-time image capture and storage in computer-vision applications where encoding speed matters more than compression ratio.
- Batch processing large image datasets where lossless fidelity is required but PNG is too slow.
- High-throughput image pipelines using thread pools to encode or decode many images concurrently.
- Lossy image compression for scenarios where visual quality (SSIM ~0.94) is acceptable and speed is critical.
- Intermediate image format in machine-learning training loops where numpy arrays are already in memory.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you work with numpy arrays and need faster lossless image I/O than PNG.
The package is stable, well-maintained, has no security issues, and installs easily on modern Python. Skip it if compression ratio is your primary concern or if you need formats other than lossless/lossy RGB.
Install
qoi on PyPI
Before you install
Prebuilt wheels available for modern Python versions (3.10–3.13) across macOS, Linux, and Windows, reducing compile friction. Package is aging (564 days since last release) but remains actively maintained; no known security issues.
Requires numpy; image data must be a numpy array in HWC (height, width, channel) ordering.
License in practice
MIT license permits unrestricted use, modification, and distribution in both open-source and proprietary projects with minimal obligations.
Quickstart
import numpy as np
import qoi
rgb = np.random.randint(0, 255, size=(224, 244, 3), dtype=np.uint8)
qoi.write('/tmp/img.qoi', rgb)
rgb_read = qoi.read('/tmp/img.qoi')
Verify before relying
- Whether the 10x encoding and 5x decoding speedups over PNG hold consistently across different image types and sizes in real-world workflows.
- Performance characteristics of the lossy mode (downscaling trick) on typical computer-vision pipelines.
- GIL-free multithreading behavior and scalability limits with concurrent.futures or similar patterns.
Package facts
| License | MIT permissive |
| Python support | Supports the current Python release >=3.8 |
| Install friction | Medium. Platform-specific wheel |
| Runtime dependencies | 1 packagenumpy |
| Maintenance | Aging 564 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 212,048 / month, #9,468 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | License :: OSI Approved :: MIT LicenseOperating System :: OS IndependentProgramming Language :: Python :: 3Topic :: Scientific/Engineering :: Image Processing |
Evidence: qoi-0.7.2-cp310-cp310-macosx_10_9_x86_64.whl; qoi-0.7.2-cp310-cp310-macosx_11_0_arm64.whl; qoi-0.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; qoi-0.7.2-cp310-cp310-win32.whl; qoi-0.7.2-cp310-cp310-win_amd64.whl; qoi-0.7.2-cp311-cp311-macosx_10_9_x86_64.whl; qoi-0.7.2-cp311-cp311-macosx_11_0_arm64.whl; qoi-0.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; qoi-0.7.2-cp311-cp311-win32.whl; qoi-0.7.2-cp311-cp311-win_amd64.whl; qoi-0.7.2-cp312-cp312-macosx_10_13_x86_64.whl; qoi-0.7.2-cp312-cp312-macosx_11_0_arm64.whl; qoi-0.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; qoi-0.7.2-cp312-cp312-win32.whl; qoi-0.7.2-cp312-cp312-win_amd64.whl; qoi-0.7.2-cp313-cp313-macosx_10_13_x86_64.whl; qoi-0.7.2-cp313-cp313-macosx_11_0_arm64.whl; qoi-0.7.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; qoi-0.7.2-cp313-cp313-win32.whl; qoi-0.7.2-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 › “qoi image format python”
- qoiA Python wrapper for the QOI (Quite OK Image) lossless image format…
- loadimgLoads and converts images between multiple formats—numpy arrays, PIL…
- pillow-avif-pluginRegisters AVIF image format support with Pillow, enabling AVIF file…
Give your agent the search over MCP, or paste the wish link into any chat.
More Image Processing packages
Albumentations applies image transformations to training data, supporting classification, segmentation, object detection, and pose estimation with a unified API for images, masks, bounding boxes, and keypoints.
Install it if you need a unified, production-grade augmentation API for computer vision tasks.
Albucore provides optimized atomic image processing functions that automatically select the fastest implementation (NumPy, OpenCV, NumKong, StringZilla, or PyTorch) based on input characteristics for efficient uint8 and float32 image manipulation.
Install it if you are building image augmentation or preprocessing pipelines and want to avoid manual optimization.
kornia-rs provides low-level computer vision operations—image I/O, resizing, color conversion, and video capture—implemented in Rust with Python bindings for efficient, thread-safe processing.
SeleniumBase is a browser automation framework that combines Selenium WebDriver with pytest integration, CDP mode for bot-detection bypass, and tools for web testing, scraping, and crawling.
However, the 60 runtime dependencies are substantial—evaluate whether you need the full feature set or if a lighter alternative suits your use case.
Python client library for Google Earth Engine, enabling programmatic access to satellite imagery and geospatial datasets for remote sensing and environmental analysis.
The main gotcha is that authentication and an Earth Engine project are prerequisites; also, dynamic class loading means you'll rely on the official API Reference.
PyIQA provides a PyTorch-based toolbox for computing image quality assessment metrics, supporting both full-reference and no-reference methods with GPU acceleration and calibration against official implementations.
See also pylibjpeg-openjpeg · pyjpegls · pylibjpeg · PyTurboJPEG · pyoxipng · simplejpeg · pylerc · blurhash · pylibjpeg-libjpeg · blend-modes