Git Product home page Git Product logo

gifflen-sample's Introduction

gifflen-sample

AndroidでGif Animation Fileを生成するサンプル

Bitmap color reduction and GIF encoding

@see http://jiggawatt.org/badc0de/android/#gifflen

I've written a small native lib for Android to do color quantization (from 2-256 colors) of a Bitmap and save the result as a frame in an animated GIF (you can add as many frames as you like). You may hack and slash the library code as you wish to fit your needs. The color quantizer used is Anthony Dekker's NeuQuant, with some modifications made by me.

The Java code to use the library would be something like:

static {
  System.loadLibrary("gifflen");
}

....

public native int Init(String gifName, int w, int h, int numColors, int quality,
                       int frameDelay);
public native void Close();
public native int AddFrame(int[] inArray);

....


// Filename, width, height, colors, quality, frame delay
if (Init("/sdcard/foo.gif", width, height, 256, 100, 4) != 0) {
	Log.e("gifflen", "Init failed");
}

int[] pixels = new int[width*height];
// bitmap should be 32-bit ARGB, e.g. like the ones you get when decoding
// a JPEG using BitmapFactory
bitmap.getPixels(pixels, 0, width, 0, 0, width, height);

// Convert to 256 colors and add to foo.gif
AddFrame(pixels);

Close();

gifflen-sample's People

Contributors

wasabeef avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

gifflen-sample's Issues

signal 7 (SIGBUS), code 2 (BUS_ADRERR) on large images

When encoding large images (640x480) + I encounter a crash during quantization especially on this line (gifflen.cpp:919):

while (i < samplepixels) {
    /*b = p[0] << netbiasshift;
    g = p[1] << netbiasshift;
    r = p[2] << netbiasshift;*/
    b = (((*p)) & 0xff) << netbiasshift;
    g = (((*p) >> 8) & 0xff) << netbiasshift;
    r = (((*p) >> 16) & 0xff) << netbiasshift;
    j = contest(b,g,r);

*p might not be pointing to the right place

Happens both on x86 and ARM, so it wouldn't be alignment issues.

define a class in a .c source file but show error

Hi,there, I'am a newer of C++.I'am trying to compile these C++ file to the so file in Android Studio by Cmake.but I got a problem that in dib.c and dib.h the defination of class DIB shows error which said that "unknown type name class", In my opinion I just know we can not define a class in .c file,but why is that in gifflen ? appreciating your reply,buddy!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.