videos programa partir para hacer gratis gifs fotos crear con como animados android animation jpeg adt gif

programa - Cómo crear un GIF animado a partir de archivos JPEG en Android(desarrollo)



programa para hacer gifs animados (6)

Esto podría ayudarte. Es una clase que se usa para generar archivos gif.

http://elliot.kroo.net/software/java/GifSequenceWriter/

Estoy buscando una manera simple de crear un GIF animado en una aplicación nativa de Android. Los archivos de origen deben ser JPEG (desde la cámara o lo que sea) y la salida debe guardarse como GIF en el dispositivo.

No quiero saber cómo reproducir animaciones o archivos GIF animados.

Para ser claro: quiero saber cómo poner imágenes individuales cuadro por cuadro en una "película" y luego guardarla como un archivo .gif.

Por ejemplo, esta aplicación puede hacer lo que quiero hacer.


Gif es básicamente un conjunto de imágenes con un retraso de tiempo constante en cuadros. No puedes jugar gif directamente en Android. He trabajado mucho en la reproducción de animación gif en Android.

  • Cuando jugamos gif también manejamos todas las llamadas de reproducción de cuadros por nuestra cuenta. Entonces este no es el mejor enfoque

  • Si tiene un conjunto de imágenes simplemente reprodúzcalas por un retraso en los fotogramas. Eso sería lo único que quieres.

  • No se puede hacer gif en la aplicación por código nativo también. También existen algunos inconvenientes para usar el formato gif. Que me había enfrentado en mi juego.

  • Si tiene un conjunto de elementos dibujables, puede usar AnimationDrawable para mostrar una animación como gif también. También puede establecer cualquier vista.

También hice una vista personalizada para reproducir animaciones gif. Primero cargo gif y lo convierto en InputStream, luego lo paso a mi clase de vista personalizada para reproducir el gif.

public class GifWebView extends View { private Movie mMovie; InputStream mStream; long mMoviestart; private boolean play; public GifWebView(Context context, InputStream stream) { super(context); mStream = stream; setPlay(true); mMovie = Movie.decodeStream(mStream); } @Override protected void onDraw(Canvas canvas) { canvas.drawColor(Color.TRANSPARENT); super.onDraw(canvas); final long now = SystemClock.uptimeMillis(); if (mMoviestart == 0) { mMoviestart = now; } final int relTime = (int) ((now - mMoviestart) % mMovie.duration()); mMovie.setTime(relTime); mMovie.draw(canvas, 20, 20); if (play) { Log.i("reltime", "" + relTime + ",duration:" + mMovie.duration()); this.invalidate(); } } @Override public boolean onTouchEvent(android.view.MotionEvent event) { return true; }; public boolean isPlay() { return play; }


Me fue muy bien, creó archivos de imágenes rápidas y de buena calidad

//True for dither. Will need more memory and CPU AnimatedGIFWriter writer = new AnimatedGIFWriter(true); OutputStream os = new FileOutputStream("animated.gif"); Bitmap bitmap; // Grab the Bitmap whatever way you can // Use -1 for both logical screen width and height to use the first frame dimension writer.prepareForWrite(os, -1, -1) writer.writeFrame(os, bitmap); // Keep adding frame here writer.finishWrite(os); // And you are done!!!

Here


Si solo desea mostrar estos mapas de bits como un gif animado, puede crear un dibujo animado usando este código:

AnimationDrawable animation = new AnimationDrawable(); animation.addFrame(getResources().getDrawable(R.drawable.image1), 10); animation.addFrame(getResources().getDrawable(R.drawable.image2), 50); animation.addFrame(getResources().getDrawable(R.drawable.image3), 30); animation.setOneShot(false); ImageView imageAnim = (ImageView) findViewById(R.id.imageView); imageAnim.setImageDrawable(animation); // start the animation! animation.start();


Vea esta solución.

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

Es una versión de Android de esta publicación.

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

Para usar esta clase, aquí hay un ejemplo de método de ayuda para generar una matriz de bytes GIF. Tenga en cuenta que la función getBitmapArray () es un método para devolver todos los archivos de mapa de bits en un adaptador de imagen a la vez. Entonces, la entrada son todos los archivos de mapa de bits en un adaptador, el resultado es una matriz de bytes que puede escribir en el archivo.

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(); }

Para usar esta función, haga lo siguiente, luego puede guardar el archivo en la tarjeta SD.

FileOutputStream outStream = null; try{ outStream = new FileOutputStream("/sdcard/generate_gif/test.gif"); outStream.write(generateGIF()); outStream.close(); }catch(Exception e){ e.printStackTrace(); }