Filtros de imagen y video como snapchat en android

Estoy desarrollando una aplicación donde quiero que los filtros se apliquen de la manera snapchat hace, de lo que puedo entender es que están usando PagerAdapter pero no sé cómo se aplican los filtros sobre la imagen o los videos y no es otra imagen con Filtro aplicado a él. Cualquier idea o fragmento de código que pueda hacer lo mismo es muy apreciado por las imágenes y los videos tanto como por guardarlos también. Gracias: D Esto es lo que estoy tratando de lograr [! [] [1] [1]

Lo que hago aquí es superponer dos mapas de bits entre sí. La cantidad de cualquiera de los mapas de bits debe ser visible se determina mediante el toque del usuario. Tengo un enum para qué dirección el usuario está desplazándose básicamente a la izquierda oa la derecha y NINGUNO. Dependiendo de la dirección en la que se desplaza el usuario, se aplica bitmap diferente al mapa de bits actual.

@Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { if (mCurrentScrollDirection.ordinal() == ScrollDirection.NONE.ordinal()) { if (distanceX > 0) { mCurrentScrollDirection = ScrollDirection.LEFT; } else { mCurrentScrollDirection = ScrollDirection.RIGHT; } } mTouchX = (int) e2.getX(); overlayBitmaps(mTouchX); return false; } private void overlayBitmaps(int coordinateX) { switch (mCurrentScrollDirection) { case NONE: { //do nothing here break; } case LEFT: { overlayNextBitmap(coordinateX); break; } case RIGHT: { overlayPreviousBitmap(coordinateX); break; } } } private void overlayPreviousBitmap(int coordinateX) { mImageCanvas.save(); Bitmap OSBitmap = Bitmap.createBitmap(mCurrentBitmap, coordinateX, 0, mCurrentBitmap.getWidth() - coordinateX, mCurrentBitmap.getHeight()); mImageCanvas.drawBitmap(OSBitmap, coordinateX, 0, null); Bitmap FSBitmap = Bitmap.createBitmap(mPreviousBitmap, 0, 0, coordinateX, mCurrentBitmap.getHeight()); mImageCanvas.drawBitmap(FSBitmap, 0, 0, null); mImageCanvas.restore(); mCapturedImageView.setImageDrawable(new BitmapDrawable(getResources(), mResultBitmap)); } private void overlayNextBitmap(int coordinateX) { mImageCanvas.save(); Bitmap OSBitmap = Bitmap.createBitmap(mCurrentBitmap, 0, 0, coordinateX, mCurrentBitmap.getHeight()); mImageCanvas.drawBitmap(OSBitmap, 0, 0, null); Bitmap FSBitmap = Bitmap.createBitmap(mNextBitmap, coordinateX, 0, mCurrentBitmap.getWidth() - coordinateX, mCurrentBitmap.getHeight()); mImageCanvas.drawBitmap(FSBitmap, coordinateX, 0, null); mImageCanvas.restore(); mCapturedImageView.setImageDrawable(new BitmapDrawable(getResources(), mResultBitmap)); } 

Esto funciona bastante bien, sólo no he probado en dispositivos de memoria baja teniendo en cuenta que no pude encontrar muchos 🙂

Para obtener una referencia completa del código, verifique este enlace. Es mi propia biblioteca donde puedes capturar imágenes aplicar filtros y obtener una devolución de llamada a la actividad de llamada. Todavía es un trabajo en progreso.

  • Posicionamiento de una imagen dentro de un ImageView con gravedad: arriba
  • Cómo convertir un objeto de imagen en un objeto de mapa de bits, Android
  • Añadir una imagen a Android MapView
  • Android webview: detecte una larga pulsación en <a> y <img>
  • Mapa de bits en Android: Tamaño de los recursos para mostrar como 50dp
  • Bitmap.createBitmap (Fuente de mapa de bits, int x, int y, int width, int height) return bitmap incorrecto
  • Combinar imágenes en android
  • Visualización de imágenes y conversión a escala de grises - OpenCV para Android, API de Java
  • Cómo crear un mapa de bits de un archivo de imagen en Android
  • Superponer dos imágenes en android para establecer una vista de imagen
  • Cómo obtener el ancho y la altura de la imagen mostrada en android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.