Giter VIP home page Giter VIP 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

MIME Type, File Extension

The recommended MIME type for QOI images is image/qoi. While QOI is not yet officially registered with IANA, I believe QOI has found enough adoption to prevent any future image format from choosing the same name, thus making a MIME type collision highly unlikely (see #167).

The recommended file extension for QOI images is .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.

Improvements, New Versions and Contributing

The QOI format has been finalized. It was a conscious decision to not have a version number in the file header. If you have a working QOI implementation today, you can rest assured that it will be compatible with all QOI files tomorrow.

There are a lot of interesting ideas for a successor of QOI, but none of these will be implemented here. That doesn't mean you shouldn't experiment with QOI, but please be aware that pull requests that change the format will not be accepted.

Likewise, pull requests for performance improvements will probably not be accepted either, as this "reference implementation" tries to be as easy to read as possible.

Tools

Implementations & Bindings of QOI

QOI Support in Other Software

  • Amiga OS QOI datatype - adds support for decoding QOI images to the Amiga operating system.
  • 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
  • XnView MP - supports decoding QOI since 1.00

Packages

  • AUR - system-wide qoi.h, qoiconv and qoibench install as split packages.
  • Debian - packages for binaries and qoi.h
  • Ubuntu - packages for binaries and qoi.h

Packages for other systems tracked at Repology.

qoi's People

Contributors

phoboslab avatar pfusik avatar varuld avatar jsoref avatar sezero avatar jmaselbas avatar nulliion avatar zakarumych avatar rbino avatar jaffaketchup avatar luisalfredo92 avatar lucasmw avatar elihwyma avatar aftersol avatar 0xd34df00d avatar mhoward540 avatar musabkilic avatar nsauzede avatar oldes avatar samyak2 avatar tom94 avatar tiagofilipesilva avatar tiefseetauchner avatar vkoskiv avatar xfmoulet avatar aquaratixc avatar contriteobserver avatar dan9er avatar iorange avatar iarwain avatar

Watchers

 avatar

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.