Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create an animated GIF from JPEGs in Android (development)

I am looking for a simple way to create an animated GIF in a native Android application. The source files should be JPEG (from camera or what ever) and the output should be saved as GIF on the device.

I do not want to know how to play animations or animated GIF files.

To be clear: I want to know how to put single images frame by frame into a "movie" and then save it as a .gif file.

e.g. This App can do want I want to do.

like image 636
Mischa Avatar asked May 02 '13 06:05

Mischa


People also ask

Can jpegs be animated?

No, the JPEG file format has no inherent support for animation. The image you linked is actually an animated GIF disguised with a jpg file extension.


1 Answers

See this solution.

https://github.com/nbadal/android-gif-encoder

It's an Android version of this post.

http://www.jappit.com/blog/2008/12/04/j2me-animated-gif-encoder/

To use this class, here is an example helper method to generate GIF byte array. Note here the getBitmapArray() function is a method to return all the Bitmap files in an image adapter at once. So the input is all the Bitmap files in one adapter, the output is a byte array which you can write to the file.

public byte[] generateGIF() {     ArrayList<Bitmap> bitmaps = adapter.getBitmapArray();     ByteArrayOutputStream bos = new ByteArrayOutputStream();     AnimatedGifEncoder encoder = new AnimatedGifEncoder();     encoder.start(bos);     for (Bitmap bitmap : bitmaps) {         encoder.addFrame(bitmap);     }     encoder.finish();     return bos.toByteArray(); } 

To use this function, do the following then you can save the file into SDcard.

FileOutputStream outStream = null;         try{             outStream = new FileOutputStream("/sdcard/generate_gif/test.gif");             outStream.write(generateGIF());             outStream.close();         }catch(Exception e){             e.printStackTrace();         } 
like image 181
Fanglin Avatar answered Sep 20 '22 18:09

Fanglin