Estoy leyendo una imagen sin procesar de la red. Esta imagen ha sido leída por un sensor de imagen, no desde un archivo.Cómo obtener un mapa de bits a partir de una imagen sin formato
Estas son las cosas que sé acerca de la imagen:
~ Altura Anchura &
~ Tamaño total (en bytes)
~ 8 bits en escala de grises
~ 1 byte/pixel
estoy tratando de convertir esta imagen a un mapa de bits para mostrar en una vista de imagen.
Esto es lo que he intentado:
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.outHeight = shortHeight; //360
opt.outWidth = shortWidth;//248
imageBitmap = BitmapFactory.decodeByteArray(imageArray, 0, imageSize, opt);
decodeByteArray vuelve nula , ya que no puede decodificar mi imagen.
También probé leer directamente desde el flujo de entrada, sin necesidad de convertir a una matriz de bytes primero:
imageBitmap = BitmapFactory.decodeStream(imageInputStream, null, opt);
Esto devuelve nula también.
He buscado en este & otros foros, pero no puedo encontrar la manera de lograrlo.
¿Alguna idea?
EDITAR: Debo agregar que lo primero que hice fue verificar si la transmisión realmente contiene la imagen en bruto. Lo hice usando otras aplicaciones (iPhone/Windows MFC) & que pueden leer y mostrar la imagen correctamente. Solo necesito encontrar una forma de hacerlo en Java/Android.
@Seva Alekseyev: gracias por la respuesta. Probé tu sugerencia. Estoy obteniendo una excepción en tiempo de ejecución. Según el logcat "Buffer no lo suficientemente grande para píxeles". Estoy creando el mapa de bits usando ancho & altura de la imagen – OceanBlue
@OceanBlue: el mensaje sugiere que el búfer de Bits es menor que 4 * Ancho * Alto bytes de longitud. Compruebe si es ARGB_888 es un formato de 4 bytes por píxel. –
@Seva Alekseyev: Sé por Asegúrese de que el búfer Bits sea Ancho * Alto bytes largos. La imagen es de 1 byte por formato de píxeles. De modo que, incluso si creara una matriz de bytes 4 veces el tamaño, la imagen se almacenaría en la primera 1/4 parte de ella. ¿Conoces algún formato de "1 byte por píxel" en Android? – OceanBlue