Home
Softono
godot-gdgifexporter

godot-gdgifexporter

Open source MIT GDScript
143
Stars
12
Forks
3
Issues
3
Watchers
7 months
Last Commit

About godot-gdgifexporter

Gif exporter for Godot made entirely in GDScript

Platforms

Web Self-hosted

Languages

GDScript

Links

Gif exporter for Godot made entirely in GDScript

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

Mentioned in Awesome Godot

Example

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

Quantization methods

Addon supports two quantization methods:

  • Median Cut
  • Uniform (with small color adjustment)

Both method files are stored in gdgifexporter/quantization directory.

Error Codes

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)

Contributors

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

Used external libs