Render un byte como mapa de bits en Android

Estoy recibiendo una matriz de bytes de una llamada JNI, y tratando de construir un objeto Bitmap con él.

Mi problema es, el código siguiente, devuelve null.

byte[] image = services.getImageBuffer(1024, 600); Bitmap bmp = BitmapFactory.decodeByteArray(image, 0, image.length); 

¿Algún consejo?

PS: El diseño de píxeles es BGR, no RGB.

El doc dice que el método devuelve "null si la imagen no puede ser decodificada". Puedes probar:

 byte[] image = services.getImageBuffer(1024, 600); InputStream is = new ByteArrayInputStream(image); Bitmap bmp = BitmapFactory.decodeStream(is); 

Incluso si no creo que va a cambiar nada sin embargo .. Trate de echar un vistazo a android.graphics.BitmapFactory.Options así

El decodeByteArray realmente doesens't funciona con este formato. Cambio de BGR a RGB manualmente.

  byte[] image = services.getImageBuffer(1024, 600); Bitmap bmp = Bitmap.createBitmap(1024, 600, Bitmap.Config.RGB_565); int row = 0, col = 0; for (int i = 0; i < image.length; i += 3) { bmp.setPixel(col++, row, image[i + 2] & image[i + 1] & image[i]); if (col == 1024) { col = 0; row++; } 

Sin embargo,

 for (i < image.length) 。。。bmp.setPixel(image[i + 2] & image[i + 1] & image[i]); 

puede causar:

08-29 14: 34: 23.460: ERROR / AndroidRuntime (8638): java.lang.ArrayIndexOutOfBoundsException

  • Volley NetworkImageView - cómo reciclar mapas de bits?
  • ¿Por qué android.app.Activity no es abstracto por diseño?
  • ¿Cuál es el propósito básico de la anotación @SerializedName en android usando GSon
  • ¿Distancia más corta de Levenshtein? ¿Lo necesito?
  • HttpURLConnection.getResponseCode () devuelve -1 en segunda invocación
  • Android: ClickableSpan en TextView seleccionable
  • Cómo agregar rectángulos encima del rectángulo existente en el lienzo
  • Android desventajas de no cerrar el cursor
  • ¿No cierra el cursor o el objeto de la base de datos?
  • ¿Cómo apagar el teléfono Android mediante programación?
  • OpenCV Android - No se puede resolver la función JNI correspondiente
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.