ihsanity / mgGif

A unity library to parse GIF files and extract the images as textures

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

mgGIF

A unity library to parse a GIF file and extracts the images, just for fun

Butterfly

Installation

Copy Assets\mgGif\mgGif.cs to your project.

Alternatively, the upm branch can be pulled directly into the Packages directory, e.g.

git clone -b upm git@github.com:gwaredd/mgGif.git

Usage

Pass a byte[] of the GIF file and loop through results.

byte[] data = File.ReadAllBytes( "some.gif" );

using( var decoder = new MG.GIF.Decoder( data ) )
{
    var img = decoder.NextImage();

    while( img != null )
    {
        Texture2D tex = img.CreateTexture();
        int delay = img.Delay;
        
        img = decoder.NextImage();
    }
}

See AnimatedTextures.cs for an example

NB: For speed the decoder will reuse buffers between each NextImage() call. If you need to keep the raw image data then ensure you Clone() it first.

For an additional performance improvement, uncomment mgGIF_UNSAFE at the top of the file and allow unsafe code compilation in the assembly.

Benchmarks

Benchmarks of the time to decode three test animations using different libraries.

Library Editor Mono IL2CPP
UniGif 7321 ms 3790 ms 3178 ms
Unity-GifDecoder 365 ms 123 ms 88 ms
mgGif 247 ms 112 ms 80 ms
mgGif (Unsafe Mode) 280 ms 106 ms 70 ms

[2020-10-11] mgGIF is the fastest pure C# GIF decoder for Unity on github

About

A unity library to parse GIF files and extract the images as textures

License:MIT License


Languages

Language:C# 99.5%Language:Python 0.5%