Git Product home page Git Product logo

qoi's Introduction

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

  • SerenityOS supports decoding QOI system wide through a custom cpp implementation in LibGfx
  • Raylib supports decoding and encoding QOI textures through its rtextures module
  • Rebol3 supports decoding and encoding QOI using a native codec
  • c-ray supports QOI natively
  • SAIL image decoding library, supports decoding and encoding QOI images
  • Orx 2D game engine, supports QOI natively
  • IrfanView supports decoding and encoding QOI through its Formats plugin
  • ImageMagick supports decoding and encoding QOI, since 7.1.0-20
  • barebox bootloader, supports decoding QOI images for splash logo, since v2022.03.0
  • KorGE & KorIM Kotlin 2D game engine and imaging library, supports decoding and encoding QOI natively since 2.7.0
  • DOjS DOS JavaScript Canvas implementation supports loading QOI files

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.