Skip to content

DmitriySalnikov/godot_qoi

Repository files navigation

godot_qoi

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.

Godot 3 version

Features

  • Fastest encoding and fast decoding (when working with the QOI class in scripts)
  • Editor integration (use .qoi as regular textures)
  • Cross-platform
  • Simple API

Disadvantage

  • Large file size when working with .qoi files directly (compared to PNG or WebP. more than 2-3 times larger)

Approximate comparison of QOI encoding speed vs PNG

QOIvsPNG.mp4

Support

qiwi

Boosty

Download

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).

Editor integration

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/*

image

API

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

Example

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

License

MIT license