Go to file
Dominic Szablewski e367cb19df
Merge pull request #164 from aldanor/feature/add-qoi-rust
Add `qoi` Rust crate reference (aldanor/qoi-rust)
2022-01-06 11:50:43 +01:00
.gitignore Ignore stb dependencies and build artifacts 2021-12-11 15:49:14 +01:00
qoi.h Fix documentation for consecutive QOI_OP_INDEX chunks; close #112 2022-01-05 16:57:38 +01:00
qoibench.c fixed gcc warnings in qoibench.c 2022-01-02 01:26:42 -08:00
qoiconv.c Replace printf() with puts() 2021-12-21 09:41:33 +00:00
qoifuzz.c Add clang fuzzing harness. Thanks @landaire 2021-12-16 20:02:37 +01:00
README.md Add qoi Rust crate reference (aldanor/qoi-rust) 2022-01-06 04:06:21 +03:00

QOI Logo

QOI - The “Quite OK Image Format” for fast, lossless image compression

Single-file MIT licensed library for C/C++

See qoi.h for the documentation and format specification.

More info at https://qoiformat.org

Why?

Compared to stb_image and stb_image_write QOI offers 20x-50x faster encoding, 3x-4x faster decoding and 20% better compression. It's also stupidly simple and fits in about 300 lines of C.

Example Usage

  • qoiconv.c converts between png <> qoi
  • qoibench.c a simple wrapper to benchmark stbi, libpng and qoi

Limitations

The QOI file format allows for huge images with up to 18 exa-pixels. A streaming en-/decoder can handle these with minimal RAM requirements, assuming there is enough storage space.

This particular implementation of QOI however is limited to images with a maximum size of 400 million pixels. It will safely refuse to en-/decode anything larger than that. This is not a streaming en-/decoder. It loads the whole image file into RAM before doing any work and is not extensively optimized for performance (but it's still very fast).

If this is a limitation for your use case, please look into any of the other implementations listed below.

Tools

Implementations & Bindings of QOI

QOI Support in Other Software

Packages

AUR - system-wide qoi.h, qoiconv and qoibench install as split packages.

Implementations not yet conforming to the final specification

These implementations are based on the pre-release version of QOI. Resulting files are not compatible with the current version.