2021-12-21 19:22:43 +01:00
![QOI Logo ](https://qoiformat.org/qoi-logo.svg )
2021-12-20 10:52:19 +01:00
# QOI - The “Quite OK Image Format” for fast, lossless image compression
2021-11-24 11:07:17 +01:00
Single-file MIT licensed library for C/C++
See [qoi.h ](https://github.com/phoboslab/qoi/blob/master/qoi.h ) for
2021-12-20 10:52:19 +01:00
the documentation and format specification.
2021-11-24 11:07:17 +01:00
2021-12-20 10:52:19 +01:00
More info at https://qoiformat.org
2021-11-27 18:36:17 +01:00
2021-11-27 13:21:16 +01:00
2021-11-24 11:07:17 +01:00
## 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 ](https://github.com/phoboslab/qoi/blob/master/qoiconv.c )
converts between png < > qoi
- [qoibench.c ](https://github.com/phoboslab/qoi/blob/master/qoibench.c )
a simple wrapper to benchmark stbi, libpng and qoi
2021-11-28 16:12:08 +01:00
2021-11-29 11:23:33 +01:00
2021-12-16 20:12:27 +01:00
## 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.
2021-11-29 11:23:33 +01:00
## Tools
2021-12-20 17:26:18 +01:00
- https://github.com/floooh/qoiview - native QOI viewer
2021-12-23 21:24:14 +01:00
- https://github.com/pfusik/qoi-ci/releases/tag/qoi-ci-1.1.0 - QOI Plugin installer for GIMP, Imagine, Paint.NET and XnView MP
2021-12-20 19:31:57 +01:00
- https://github.com/iOrange/QoiFileTypeNet/releases/tag/v0.2 - QOI Plugin for Paint.NET
2021-12-23 11:52:24 +01:00
- https://github.com/iOrange/QOIThumbnailProvider - Add thumbnails for QOI images in Windows Explorer
2021-12-26 17:41:44 +01:00
- https://github.com/Tom94/tev - another native QOI viewer (allows pixel peeping and comparison with other image formats)
2021-11-29 11:23:33 +01:00
2021-12-21 17:13:11 +01:00
## Implementations & Bindings of QOI
- https://github.com/pfusik/qoi-ci (Ć, transpiled to C, C++, C#, Java, JavaScript, Python and Swift)
- https://github.com/kodonnell/qoi (Python)
- https://github.com/Cr4xy/lua-qoi (Lua)
- https://github.com/superzazu/SDL_QOI (C, SDL2 bindings)
2021-12-21 17:51:08 +01:00
- https://github.com/saharNooby/qoi-java (Java)
2021-12-22 19:56:52 +01:00
- https://github.com/MasterQ32/zig-qoi (Zig)
2021-12-22 02:34:48 +01:00
- https://github.com/rbino/qoix (Elixir)
2021-12-22 17:08:40 +01:00
- https://github.com/NUlliiON/QoiSharp (C#)
2021-12-22 22:21:46 +01:00
- https://github.com/zakarumych/rapid-qoi (Rust)
2021-12-23 11:58:21 +01:00
- https://github.com/takeyourhatoff/qoi (Go)
2021-12-23 12:00:35 +01:00
- https://github.com/DosWorld/pasqoi (Pascal)
2021-12-23 17:53:32 +01:00
- https://github.com/elihwyma/Swift-QOI (Swift)
2021-12-24 00:12:53 +01:00
- https://github.com/xfmoulet/qoi (Go)
2021-12-24 00:17:57 +01:00
- https://erratique.ch/software/qoic (OCaml)
2022-01-01 14:18:54 +01:00
- https://github.com/shadowMitia/libqoi/ (C++)
2021-12-31 14:34:55 +01:00
- https://github.com/MKCG/php-qoi (PHP)
2021-12-21 17:13:11 +01:00
2021-12-21 19:21:21 +01:00
## QOI Support in Other Software
- [SerenityOS ](https://github.com/SerenityOS/serenity ) supports decoding QOI system wide through a custom [cpp implementation in LibGfx ](https://github.com/SerenityOS/serenity/blob/master/Userland/Libraries/LibGfx/QOILoader.h )
2021-12-21 21:57:07 +01:00
- [Raylib ](https://github.com/raysan5/raylib ) supports decoding and encoding QOI textures through its [rtextures module ](https://github.com/raysan5/raylib/blob/master/src/rtextures.c )
2021-12-22 11:12:47 +01:00
- [Rebol3 ](https://github.com/Oldes/Rebol3/issues/39 ) supports decoding and encoding QOI using a native codec
2021-12-23 22:19:34 +01:00
- [c-ray ](https://github.com/vkoskiv/c-ray ) supports QOI natively
2021-12-21 19:21:21 +01:00
2021-12-21 17:13:11 +01:00
## Packages
[AUR ](https://aur.archlinux.org/pkgbase/qoi-git/ ) - 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.
2021-11-29 11:23:33 +01:00
- https://github.com/steven-joruk/qoi (Rust)
- https://github.com/ChevyRay/qoi_rs (Rust)
- https://github.com/panzi/jsqoi (TypeScript)
2021-12-11 17:22:41 +01:00
- https://github.com/0xd34df00d/hsqoi (Haskell)
2021-11-29 11:23:33 +01:00