BitmapFactory.decodeStream (inputStream) devuelve siempre null cuando algunos bytes son incorrectos

Estoy creando una aplicación para Android y actualmente tengo problemas para recuperar un mapa de bits de una URL. Aquí está el código que estoy usando:

public static Bitmap bmpFromURL(URL imageURL){ Bitmap result = null; try { HttpURLConnection connection = (HttpURLConnection)imageURL .openConnection(); connection.setDoInput(true); connection.connect(); InputStream input = connection.getInputStream(); result = BitmapFactory.decodeStream(input); } catch (IOException e) { e.printStackTrace(); } return result; } 

Todo funciona bien cuando la imagen se escribe, pero cuando algunos bytes están equivocados, el resultado obtiene nulo. Creo que es básicamente expectable como está escrito en el doc de BitmapFactory.decodeStream :

Si el flujo de entrada es nulo o no se puede utilizar para decodificar un mapa de bits, la función devuelve null. La posición del flujo estará donde estaba cuando se leyeron los datos codificados.

El problema es que mi imagen errónea está bien interpretada por mi navegador web y puedo hacerlo en la plataforma del iPhone.

¿Hay una manera de ignorar esos píxeles erróneos? tal vez con el parámetro de opción?

Cualquier ayuda apreciada

Romain

Se trata de un error conocido corregido en una futura versión de Android. Usted puede trabajar alrededor de él primero copiando el contenido del InputStream en una matriz del byte [] y descodificando entonces el arsenal del byte sí mismo.

Prueba esto. Funcionó para mí. Espero eso ayude.

 result = BitmapFactory.decodeStream(new PatchInputStream(input)); public class PatchInputStream extends FilterInputStream { public PatchInputStream(InputStream input) { super(input); } public long skip(long n) throws IOException { long m = 0L; while (m < n) { long _m = in.skip(nm); if (_m == 0L) break; m += _m; } return m; } } 
  • Fuga de memoria de Android: InputMethodManager, mapa de bits
  • SetImageViewBitmap no funciona en el widget android
  • Convertir vista en mapa de bits
  • Convertir un mapa de bits en GrayScale en Android
  • Decodificar la matriz de bytes en el mapa de bits que se ha comprimido en Java
  • Drawable vs Single reutilizable Bitmap mejor con la memoria?
  • Compartir Bitmap () en android para twitter, facebook, correo
  • Java.lang.OutOfMemoryError: tamaño de mapa de bits supera el presupuesto de VM - Android
  • cómo rotar el mapa de bits en android en el punto central utilizando matriz
  • Subir una foto tomada por la cámara a un servidor con tamaño limitado
  • ¿Por qué la muestra de documentación se divide por 2 para calcular inSampleSize para la carga de mapa de bits?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.