android-ndk-gif
android-ndk-gif copied to clipboard
GIF library built with ndk and gradle in aar format for usage with android gradle build system.
Android NDK GIF Library
GIF library built with ndk and gradle in aar format for usage with android gradle build system.
1.0.1 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_FAST (Thanks to commitor "JBurkeKF")
- encode fast. And better quality.
-
- ENCODING_TYPE_NORMAL_LOW_MEMORY
- use lower memory than ENCODING_TYPE_STABLE_HIGH_MEMORY. and image changing dynamic.
-
- ENCODING_TYPE_STABLE_HIGH_MEMORY
- slowest and use high memory. But high quality and stable image sequence.
-
How to use
Remote repository
...
repositories {
maven { url 'https://repo1.maven.org/maven2' }
...
}
dependencies {
implementation ('io.github.waynejo:androidndkgif:1.0.1')
}
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
- GIF Decoder is originally based on https://code.google.com/p/android-gifview/ .