/android-ndk-gif

GIF library built with ndk and gradle in aar format for usage with android gradle build system.

Primary LanguageC++OtherNOASSERTION

Android NDK GIF Library

GIF library built with ndk and gradle in aar format for usage with android gradle build system.

0.3.3 Change Log

  • Added Gif Image Iterator for Image decoding.
  • Fixed a problem of residual image on transparent background.

Encoding Option

  • ENCODING_TYPE_SIMPLE_FAST
    • use low memory and encode fast. But low quality.
    • ENCODING_TYPE_SIMPLE_FAST
  • ENCODING_TYPE_FAST (Thanks to commitor "JBurkeKF")
    • encode fast. And better quality.
    • ENCODING_TYPE_SIMPLE_FAST
  • ENCODING_TYPE_NORMAL_LOW_MEMORY
    • use lower memory than ENCODING_TYPE_STABLE_HIGH_MEMORY. and image changing dynamic.
    • ENCODING_TYPE_NORMAL_LOW_MEMORY
  • ENCODING_TYPE_STABLE_HIGH_MEMORY
    • slowest and use high memory. But high quality and stable image sequence.
    • ENCODING_TYPE_STABLE_HIGH_MEMORY

How to use

Remote repository

...

repositories {
    maven { url "http://dl.bintray.com/waynejo/maven" }
    ...
}

dependencies {
    compile('com.waynejo:androidndkgif:0.3.3')
}

Decoding using Iterator. (Less memory used)

GifDecoder gifDecoder = new GifDecoder();
final GifImageIterator iterator = gifDecoder.loadUsingIterator(destFile);
while (iterator.hasNext()) {
    GifImage next = iterator.next();
    if (null != next) {
        imageView.setImageBitmap(next.bitmap);
    }
}
iterator.close();

Decoding

GifDecoder gifDecoder = new GifDecoder();
boolean isSucceeded = gifDecoder.load(destFile);
if (isSucceeded) {
    for (int i = 0; i < gifDecoder.frameNum(); ++i) {
        Bitmap bitmap = gifDecoder.frame(i);
    }
}

Encoding

GifEncoder gifEncoder = new GifEncoder();
gifEncoder.init(width, height, filePath, GifEncoder.EncodingType.ENCODING_TYPE_NORMAL_LOW_MEMORY);

// Bitmap is MUST ARGB_8888.
gifEncoder.encodeFrame(bitmap1, delayMs);
gifEncoder.encodeFrame(bitmap2, delayMs);

gifEncoder.close();

Reference


Android Arsenal