Android: ¿Cómo renderizar una imagen de flujo continuo a ImageView sin cargar el mapa de bits completo?

Estoy cargando una imagen de una URL que se mostrará en un ImageView. La forma estándar es crear un mapa de bits como sigue (donde is ha obtenido InputStream desde la URL):

 Bitmap bm = BitmapFactory.decodeStream(is); 

Pero estoy tratando con imágenes grandes, y quiero empezar a mostrar píxeles antes de que la imagen completa se carga en el mapa de bits, es decir, quiero lograr una reproducción progresiva de la imagen (similar a la carga de imágenes grandes en los navegadores web). Si la imagen es, por ejemplo, un PNG entrelazado, esto me permitirá mostrar una imagen de calidad inferior a los usuarios mientras esperan a que se cargue la imagen completa. Básicamente, quiero lograr la representación como se muestra en http://www.codinghorror.com/blog/2005/12/progressive-image-rendering.html

Sé que si pudiera implementar un descodificador PNG, o usar una implementación de código abierto, podría modificarlo para convertir los píxeles en el mapa de bits de ImageView tan pronto como los lea, pero eso parece un esfuerzo gigantesco para lo que pienso.

Rendimiento progresivo simple : Esto se logra considerando la capa de red de transmisión (TCP). Cada paquete recibido en orden, se entrega en la capa de aplicación que se muestra inmediatamente. Si desea lograr esto, entonces usted necesita pensar en la programación de socket en su aplicación.

Sin embargo, este es un enfoque antiguo y en realidad más computación intensiva. Yo personalmente prefiero, trabajando con un trozo de imagen. La imagen de trozo se muestra al inicio, y se inicia un hilo inmediato con una conexión de url y descarga (administrador o caché). Una vez que la descarga se haya completado, volverá a su hilo principal para actualizar la foto. Esto es más organizable.

Por favor, corrija si estoy equivocado en cualquier sentido.

Intente el proyecto de Freso de Facebook: http://frescolib.org/#streaming No estoy seguro de qué formatos de archivo soporta, pero soporta renderización progresiva de JPEGs que han sido codificados progresivamente.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.