This is gif exporter for godot made entirely using GDScript. This is based on godot-gifexporter.
The version on master is for Godot 4.x. If you want to use version for Godot 3.x, then please pull changes from branch 3.x. :)
extends Node2D
# load gif exporter module
const GIFExporter = preload("res://gdgifexporter/exporter.gd")
# load quantization module that you want to use
const MedianCutQuantization = preload("res://gdgifexporter/quantization/median_cut.gd")
func _ready():
var img := Image.new()
# load your image from png file
img.load('res://image.png')
# remember to use this image format when exporting
img.convert(Image.FORMAT_RGBA8)
# initialize exporter object with width and height of gif canvas
var exporter = GIFExporter.new(img.get_width(), img.get_height())
# write image using median cut quantization method and with one second animation delay
exporter.add_frame(img, 1, MedianCutQuantization)
# when you have exported all frames of animation you, then you can save data into file
# open new file with write privlige
var file: FileAccess = FileAccess.open('user://result.gif', FileAccess.WRITE)
# save data stream into file
file.store_buffer(exporter.export_file_data())
# close the file
file.close()
Addon supports two quantization methods:
- Median Cut
- Uniform (with small color adjustment)
Both method files are stored in gdgifexporter/quantization directory.
Some methods give error codes. These are used error codes and their meaning:
- OK = 0 (Everything went okay)
- EMPTY_IMAGE = 1 (Passed image object has no data in it)
- BAD_IMAGE_FORMAT = 2 (You are using different image format than FORMAT_RGBA8)
If you want to contribute to this code then go ahead! :) Huge thanks to Kinwailo and novhack. This project wouldn't work without their help! Moreover the update to Godot 4.x wouldn't be possible without the contribution of OverloadedOrama, so huge respect for him! :D