QOIR source (Gemini .tar.gz, 47K)
Dominic Szablewski's Quite OK Image Format (HTTPS)
QOI-Remix is Sunset's incompatible variant of Dominic Szablewski's excellent Quite OK Image Format with the aim of providing a measurable density improvement with a moderate compute penalty.
Compared to PNG, QOI-R is generally...
Compared to QOI, QOI-R is generally...
QOI-Remix incorporates three major changes from QOI.
I had a couple of days to kill and thought QOI was really cool. That's it. Most of QOI-R was designed and implemented while spending several hours in a waiting room. There's not a grand plan or use case here. It's not intended to replace PNG, and it's not intended to replace QOI - but to provide an alternative on a different part of the lossless image compression Pareto curve. It's very fast, embeddable, fairly portable, and produces dense files.
The QOI-R distribution includes both QOI and QOI-R support.
The QOI-R bitstream format is essentially done. There are a few things I'm working on for QOI and/or QOI-R - KImageFormats support, optimized assembly backends, and some helpful utilities. These will be released over time.
I have ideas for a lossless image format that would be a larger departure from QOI, and will probably end up being named QUAIL. This may inherit concepts from QOI and QOI-R but will be a distinct format with its own magic number, and not a new QOI-R version.
I'll upload a proper spec soon. Until then, the code is simple and I welcome questions!
The base qoir.h should be usable with no significant external dependencies except a "normal" system environment (a C99 compiler, 8-bit bytes, some concession to POSIX, etc.)
qoirbench depends on libpng and the presence of stb_image.h (from the "stb" library by nothings, available at https://github.com/nothings/stb). qoirconv depends on stb_image.h and stb_image_write.h, but not libpng.
QOI-R is very new, and has been only tested and validated on a handful of platforms. That being said, it should compile on any system with a more or less sane POSIX environment. qoirbench, in particular, has had some small portability changes to make it less Linux-dependent than upstream QOI.
QOI-R has been tested on:
In the near future, I would like to test it on:
I would welcome an email from anyone that compiles QOI-R on a platform I haven't validated.
The ratio of QOI-R to QOI performance varies between systems and compilers. I'm not going to publish concrete figures, because benchmarking methodology is a whole art and vendors often get prickly about how it's done, but I will list performance ratios based on megapixels per second, with libpng as the baseline, so that users can use to project performance on their hardware of choice.
These numbers are using QOI's benchmark image set. Usual caveats regarding benchmarks apply. libpng is normalized to 1.0.
Encode Decode QOI 38.82 3.23 QOIR 31.89 2.98
Encode Decode QOI 32.83 3.39 QOIR 27.70 2.93
Encode Decode QOI 30.17 2.21 QOIR 25.61 1.99
Encode Decode QOI 33.50 4.65 QOIR 28.06 4.15
Encode Decode QOI 24.65* 3.32 QOIR 28.50* 1.79