{"id":13508229,"url":"https://github.com/phoboslab/qoi","last_synced_at":"2025-05-12T13:31:46.565Z","repository":{"id":37037267,"uuid":"431433455","full_name":"phoboslab/qoi","owner":"phoboslab","description":"The “Quite OK Image Format” for fast, lossless image compression","archived":false,"fork":false,"pushed_at":"2025-05-09T12:26:06.000Z","size":236,"stargazers_count":7096,"open_issues_count":28,"forks_count":343,"subscribers_count":91,"default_branch":"master","last_synced_at":"2025-05-09T13:41:09.124Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/phoboslab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-11-24T10:06:14.000Z","updated_at":"2025-05-09T12:26:10.000Z","dependencies_parsed_at":"2024-06-18T22:48:58.371Z","dependency_job_id":"e99cfa8a-b72a-41e3-8a47-fb1ac394106d","html_url":"https://github.com/phoboslab/qoi","commit_stats":{"total_commits":216,"total_committers":92,"mean_commits":2.347826086956522,"dds":0.6064814814814814,"last_synced_commit":"b0b926ee70108b0113dd2718d13d2207c474ed2e"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phoboslab%2Fqoi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phoboslab%2Fqoi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phoboslab%2Fqoi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phoboslab%2Fqoi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/phoboslab","download_url":"https://codeload.github.com/phoboslab/qoi/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253747781,"owners_count":21957803,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T02:00:50.115Z","updated_at":"2025-05-12T13:31:46.516Z","avatar_url":"https://github.com/phoboslab.png","language":"C","readme":"![QOI Logo](https://qoiformat.org/qoi-logo.svg)\n\n# QOI - The “Quite OK Image Format” for fast, lossless image compression\n\nSingle-file MIT licensed library for C/C++\n\nSee [qoi.h](https://github.com/phoboslab/qoi/blob/master/qoi.h) for\nthe documentation and format specification.\n\nMore info at https://qoiformat.org\n\n\n## Why?\n\nQOI offers sweet-spot of compression ratio and throughput for lossless \nimage encoding. QOI's compression is roughly comparable to PNG (usually worse than \n[libPNG](https://github.com/pnggroup/libpng), but better than [stb_image_write.h](https://github.com/nothings/stb/blob/master/stb_image_write.h)), while throughput is a lot higher.\n\nBenchmark results on a few thousand images can be found here: https://qoiformat.org/benchmark/\n\nThe QOI format is also extremely simple, which helps a lot when porting to other languages.\n\n\n## Example Usage\n\n- [qoiconv.c](https://github.com/phoboslab/qoi/blob/master/qoiconv.c)\nconverts between png \u003c\u003e qoi\n - [qoibench.c](https://github.com/phoboslab/qoi/blob/master/qoibench.c)\na simple wrapper to benchmark stbi, libpng and qoi\n\n\n## MIME Type, File Extension\n\nThe recommended MIME type for QOI images is `image/qoi`. While QOI is not yet\nofficially registered with IANA, I believe QOI has found enough adoption to\nprevent any future image format from choosing the same name, thus making a \nMIME type collision highly unlikely ([see #167](https://github.com/phoboslab/qoi/issues/167)).\n\nThe recommended file extension for QOI images is `.qoi`\n\n\n## Limitations\n\nThe QOI file format allows for huge images with up to 18 exa-pixels. A streaming \nen-/decoder can handle these with minimal RAM requirements, assuming there is \nenough storage space.\n\nThis particular implementation of QOI however is limited to images with a \nmaximum size of 400 million pixels. It will safely refuse to en-/decode anything\nlarger than that. This is not a streaming en-/decoder. It loads the whole image\nfile into RAM before doing any work and is not extensively optimized for \nperformance (but it's still very fast).\n\nIf this is a limitation for your use case, please look into any of the other \nimplementations listed below.\n\n\n## Improvements, New Versions and Contributing\n\nThe QOI format has been finalized. It was a conscious decision to **not** have a\nversion number in the file header. If you have a working QOI implementation today, \nyou can rest assured that it will be compatible with all QOI files tomorrow.\n\nThere are a lot of interesting ideas for a successor of QOI, but none of these will \nbe implemented here. That doesn't mean you shouldn't experiment with QOI, but please\nbe aware that pull requests that change the format will not be accepted.\n\nLikewise, pull requests for performance improvements will probably not be accepted\neither, as this \"reference implementation\" tries to be as easy to read as possible.\n\n\n## Tools\n\n- [floooh/qoiview](https://github.com/floooh/qoiview) - native QOI viewer\n- [pfusik/qoi-fu](https://github.com/pfusik/qoi-fu/releases) - QOI Plugin installer for Windows Explorer, Finder, GNOME, GIMP 2, Paint.NET and XnView\n- [iOrange/QoiFileTypeNet](https://github.com/iOrange/QoiFileTypeNet/releases) - QOI Plugin for Paint.NET\n- [iOrange/QOIThumbnailProvider](https://github.com/iOrange/QOIThumbnailProvider) - Add thumbnails for QOI images in Windows Explorer\n- [Tom94/tev](https://github.com/Tom94/tev) - another native QOI viewer (allows pixel peeping and comparison with other image formats)\n- [qoiconverterx](https://apps.apple.com/br/app/qoiconverterx/id1602159820) QOI \u003c=\u003e PNG converter available on the Mac App Store\n- [kaetemi/qoi-ma](https://github.com/kaetemi/qoi-max) - QOI Bitmap I/O Plugin for 3ds Max\n- [rtexviewer](https://raylibtech.itch.io/rtexviewer) - texture viewer, supports QOI\n- [rtexpacker](https://raylibtech.itch.io/rtexpacker) - texture packer, supports QOI\n- [DmitriySalnikov/godot_qoi](https://github.com/DmitriySalnikov/godot_qoi) - QOI GDNative Addon for Godot Engine\n- [dan9er/farbfeld-convert-qoi](https://gitlab.com/dan9er/farbfeld-convert-qoi) - QOI \u003c=\u003e farbfeld converter\n- [LTMX/Unity.QOI](https://github.com/LTMX/Unity.QOI) - QOI Importer and Exporter for the Unity3D Game Engine\n- [Ben1138/unity-qoi](https://github.com/Ben1138/unity-qoi) - QOI Importer(only) support for the Unity3D Game Engine\n- [xiaozhuai/jetbrains-qo](https://github.com/xiaozhuai/jetbrains-qoi) - [QOI Support](https://plugins.jetbrains.com/plugin/19352-qoi-support) for Jetbrains' IDE.\n- [serge-ivamov/QOIql](https://github.com/serge-ivamov/QOIql) - MacOS QuickLook plugin for QOI\n- [tobozo/kde-thumbnailer-qoi](https://github.com/tobozo/kde-thumbnailer-qoi) - QOI Thumbnailer for KDE\n- [walksanatora/qoi-thumbnailer-nemo](https://github.com/walksanatora/qoi-thumbnailer-nemo) - QOI Thumbnailer for Nemo\n- [hzeller/timg](https://github.com/hzeller/timg) - a terminal image viewer with QOI support\n- [LuisAlfredo92/Super-QOI-converter](https://github.com/LuisAlfredo92/Super-QOI-converter \"LuisAlfredo92/Super-QOI-converter\") - A program to convert JPG, JPEG, BMP, and PNG to QOI\n\t- [Console version](https://github.com/LuisAlfredo92/Super-QOI-converter-Console- \"Console version\"): Available for Linux, OSX and Windows\n\t- [GUI version](https://github.com/LuisAlfredo92/Super-QOI-converter-GUI- \"GUI version\"): Available only for windows\n- [tacent view](https://github.com/bluescan/tacentview) - Image and texture viewer, supports QOI\n- [colemanrgb/qoi2spr](https://github.com/colemanrgb/qoi2spr) - A variety of applications for decoding and encoding of QOI images on [RISC OS](https://www.riscosopen.org/)\n\n## Implementations \u0026 Bindings of QOI\n\n- [pfusik/qoi-fu](https://github.com/pfusik/qoi-fu) - Fusion, transpiling to C, C++, C#, D, Java, JavaScript, Python, Swift and TypeScript\n- [kodonnell/qoi](https://github.com/kodonnell/qoi) - Python\n- [JaffaKetchup/dqoi](https://github.com/JaffaKetchup/dqoi) - Dart, with Flutter support\n- [Cr4xy/lua-qoi](https://github.com/Cr4xy/lua-qoi) - Lua\n- [superzazu/SDL_QOI](https://github.com/superzazu/SDL_QOI) - C, SDL2 bindings\n- [saharNooby/qoi-java](https://github.com/saharNooby/qoi-java) - Java\n- [MasterQ32/zig-qoi](https://github.com/MasterQ32/zig-qoi) - Zig\n- [rbino/qoix](https://github.com/rbino/qoix) - Elixir\n- [NUlliiON/QoiSharp](https://github.com/NUlliiON/QoiSharp) - C#\n- [aldanor/qoi-rust](https://github.com/aldanor/qoi-rust) - Rust\n- [zakarumych/rapid-qoi](https://github.com/zakarumych/rapid-qoi) - Rust\n- [takeyourhatoff/qoi](https://github.com/takeyourhatoff/qoi) - Go\n- [DosWorld/pasqoi](https://github.com/DosWorld/pasqoi) - Pascal\n- [elihwyma/Swift-QOI](https://github.com/elihwyma/Swift-QOI) - Swift\n- [xfmoulet/qoi](https://github.com/xfmoulet/qoi) - Go\n- [erratique.ch/qoic](https://erratique.ch/software/qoic) - OCaml\n- [arian/go-qoi](https://github.com/arian/go-qoi) - Go\n- [kchapelier/qoijs](https://github.com/kchapelier/qoijs) - JavaScript\n- [KristofferC/QOI.jl](https://github.com/KristofferC/QOI.jl) - Julia\n- [shadowMitia/libqoi](https://github.com/shadowMitia/libqoi) - C++\n- [MKCG/php-qoi](https://github.com/MKCG/php-qoi) - PHP\n- [LightHouseSoftware/qoiformats](https://github.com/LightHouseSoftware/qoiformats) - D\n- [mhoward540/qoi-nim](https://github.com/mhoward540/qoi-nim) - Nim\n- [wx257osn2/qoixx](https://github.com/wx257osn2/qoixx) - C++\n- [Tiefseetauchner/lr-paint](https://github.com/Tiefseetauchner/lr-paint) - Processing\n- [amstan/qoi-fpga](https://github.com/amstan/qoi-fpga) - FPGA: verilog\n- [musabkilic/qoi-decoder](https://github.com/musabkilic/qoi-decoder) - Python\n- [mathpn/py-qoi](https://github.com/mathpn/py-qoi) - Python\n- [JohannesFriedrich/qoi4R](https://github.com/JohannesFriedrich/qoi4R) - R\n- [shraiwi/mini-qoi](https://github.com/shraiwi/mini-qoi) - C, streaming decoder\n- [10maurycy10/libqoi/](https://github.com/10maurycy10/libqoi/) - Rust\n- [0xd34df00d/hsqoi](https://github.com/0xd34df00d/hsqoi) - Haskell\n- [418Coffee/qoi-v](https://github.com/418Coffee/qoi-v) - V\n- [Imagine-Programming/QoiImagePlugin](https://github.com/Imagine-Programming/QoiImagePlugin) - PureBasic\n- [Fabien-Chouteau/qoi-spark](https://github.com/Fabien-Chouteau/qoi-spark) - Ada/SPARK formally proven\n- [mzgreen/qoi-kotlin](https://github.com/mzgreen/qoi-kotlin) - Kotlin Multiplatform\n- [Aftersol/Simplified-QOI-Codec](https://github.com/Aftersol/Simplified-QOI-Codec) - C99, encoder and decoder, freestanding\n- [AuburnSounds/gamut](https://github.com/AuburnSounds/gamut) - D\n- [AngusJohnson/TQoiImage](https://github.com/AngusJohnson/TQoiImage) - Delphi\n- [MarkJeronimus/qoi-java-spi](https://github.com/MarkJeronimus/qoi-java-spi) - Java SPI\n- [aumouvantsillage/qoi-racket](https://github.com/aumouvantsillage/qoi-racket) - Racket\n- [rubikscraft/qoi-stream](https://github.com/rubikscraft/qoi-stream) - C99, one byte at a time streaming encoder and decoder\n- [rubikscraft/qoi-img](https://github.com/rubikscraft/qoi-img) - NodeJS typescript, bindings to both [QOIxx](https://github.com/wx257osn2/qoixx) and [qoi-stream](https://github.com/rubikscraft/qoi-stream)\n- [grego/hare-qoi](https://git.sr.ht/~grego/hare-qoi) - Hare\n- [MrNocole/ZTQOI](https://github.com/MrNocole/ZTQOI) - Objective-C\n- [bpanthi977/qoi](https://github.com/bpanthi977/qoi) - Common Lisp\n- [Floessie/pam2qoi](https://github.com/Floessie/pam2qoi) - C++\n- [SpeckyYT/spwn-qoi](https://github.com/SpeckyYT/spwn-qoi) - SPWN\n- [n00bmind/qoi](https://github.com/n00bmind/qoi) - Jai\n- [SixLabors/ImageSharp](https://github.com/SixLabors/ImageSharp) - C# image proccesing library\n- [zertovitch/gid](https://github.com/zertovitch/gid) - Ada\n- [nazrin/lil](https://codeberg.org/nazrin/lil) - Lua image library\n- [Hema2-official/qoi-c3](https://github.com/Hema2-official/qoi-c3) - C3\n- [kwon-young/qoi-prolog](https://github.com/kwon-young/qoi-prolog) - Prolog\n- [google/wuffs](https://github.com/google/wuffs) - Wuffs\n\n## QOI Support in Other Software\n\n- [Amiga OS QOI datatype](https://github.com/dgaw/qoi-datatype) - adds support for decoding QOI images to the Amiga operating system.\n- [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/ImageFormats/QOILoader.h)\n- [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)\n- [Rebol3](https://github.com/Oldes/Rebol3/issues/39) - supports decoding and encoding QOI using a native codec\n- [c-ray](https://github.com/vkoskiv/c-ray) - supports QOI natively\n- [SAIL](https://sail.software) - image decoding library, supports decoding and encoding QOI images\n- [Orx](https://github.com/orx/orx) - 2D game engine, supports QOI natively\n- [IrfanView](https://www.irfanview.com) - supports decoding and encoding QOI through its Formats plugin\n- [ImageMagick](https://github.com/ImageMagick/ImageMagick) - supports decoding and encoding QOI, since 7.1.0-20\n- [barebox](https://barebox.org) - bootloader, supports decoding QOI images for splash logo, since v2022.03.0\n- [KorGE](https://korge.org) - \u0026 KorIM Kotlin 2D game engine and imaging library, supports decoding and encoding QOI natively since 2.7.0\n- [DOjS](https://github.com/SuperIlu/DOjS) - DOS JavaScript Canvas implementation supports loading QOI files\n- [XnView MP](https://www.xnview.com/en/xnviewmp/) - supports decoding QOI since 1.00\n- [ffmpeg](https://ffmpeg.org/) - supports decoding and encoding QOI since 5.1\n- [JPEGView](https://github.com/sylikc/jpegview) - lightweight Windows image viewer, supports decoding and encoding of QOI natively, since 1.1.44\n- [darktable](https://github.com/darktable-org/darktable) - photography workflow application and raw developer, supports decoding since 4.4.0\n- [KDE](https://kde.org) - supports decoding and encoding QOI images. Implemented in [KImageFormats](https://invent.kde.org/frameworks/kimageformats)\n- [EFL](https://www.enlightenment.org) - supports decoding and encoding QOI images since 1.27.\n- [Swingland](https://git.sr.ht/~phlash/swingland) - supports QOI decoding/loading via the `ImageIO` API of this Java Swing reimplemenation for Wayland\n- [Imagine](https://www.nyam.pe.kr/dev/imagine/) - supports decoding and encoding QOI images since 1.3.9\n- [Uiua](https://uiua.org) - supports decoding and encoding QOI images since 0.8.0\n- [Google Earth Pro](https://www.google.com/intl/en_uk/earth/about/versions/#download-pro) - supports Movie Maker export as sequence of QOI images since 7.3.6\n- [GIMP](https://www.gimp.org) - supports decoding and encoding QOI images since 3.0\n\n## Packages\n\n- [AUR](https://aur.archlinux.org/pkgbase/qoi-git/) - system-wide qoi.h, qoiconv and qoibench install as split packages.\n- [Debian](https://packages.debian.org/bookworm/source/qoi) - packages for binaries and qoi.h\n- [Ubuntu](https://launchpad.net/ubuntu/+source/qoi) - packages for binaries and qoi.h\n\nPackages for other systems [tracked at Repology](https://repology.org/project/qoi/versions).\n","funding_links":[],"categories":["Image Processing","C","compression","others","Libraries"],"sub_categories":["ImageCodec","C"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphoboslab%2Fqoi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphoboslab%2Fqoi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphoboslab%2Fqoi/lists"}