QOI (Quite OK Image Format) integration for Godot Engine 4.x.
This is a GDExtension library. Includes precompiled binaries for Windows
, Linux
, macOS
, Android
and Web
, but it must compile for each platform which Godot Engine supports.
- Fastest encoding and fast decoding (when working with the QOI class in scripts)
- Editor integration (use
.qoi
as regular textures) - Cross-platform
- Simple API
- Large file size when working with
.qoi
files directly (compared to PNG or WebP. more than 2-3 times larger)
QOIvsPNG.mp4
To download, use the Godot Asset Library or download the archive by clicking the button at the top of the main repository page: Code -> Download ZIP
, then unzip it to your project folder. Or use one of the stable versions from the GitHub Releases page (just download one of the "Source Codes" in assets).
By default, after installation, QOI importer and QOI saver will be active.
The importer allows you to import .qoi
files and use them as regular textures in your project.
The saver allows you to save Image
and Texture2D
resources as .qoi
files using standard Godot tools.
But if you don't need these integrations and you want to use only the QOI
class, then you can disable them in the project settings. These settings are located here: rendering/textures/qoi/*
The entire API is in the QOI
class. It can be found in the documentation inside the engine.
# Read the QOI image from file
# @return null or Image
Image read(path : String) static
# Decode the QOI image from an encoded byte array
# @return null or Image
Image decode(data : PackedByteArray) static
# Write the Image as a file in QOI format
# @return code of Error
Error write(path : String, image : Image) static
# Encode the Image in QOI format as an array of bytes
# @return an array of bytes. If an error occurs, it is empty.
PackedByteArray encode(image : Image) static
func example():
QOI.write("user://example.qoi", load("res://icon.svg").get_image())
var img = QOI.read("user://example.qoi")
var enc = QOI.encode(img)
var dec = QOI.decode(enc)
var tex: = ImageTexture.create_from_image(dec)
$TextureRect.texture = tex
MIT license