Sto caricando un'immagine da un URL per essere mostrata in un ImageView. Il metodo standard è quello di creare una bitmap come segue (dove l'InputStream is
è stato ottenuto dal URL):Android: come eseguire il rendering di un'immagine di streaming al volo su ImageView senza caricare la bitmap completa?
Bitmap bm = BitmapFactory.decodeStream(is);
Ma ho a che fare con le immagini di grandi dimensioni, e voglio per avviare la visualizzazione pixel prima che l'intera immagine è caricato nella bitmap cioè voglio ottenere il rendering progressivo dell'immagine (simile al caricamento di immagini di grandi dimensioni nei browser web). Se l'immagine è, ad esempio, un PNG interlacciato, questo mi consentirà di mostrare agli utenti un'immagine di qualità inferiore mentre attendono il caricamento completo dell'immagine. Fondamentalmente, voglio ottenere il rendering come illustrato nella http://www.codinghorror.com/blog/2005/12/progressive-image-rendering.html
lo so se ho potuto implementare un decoder PNG, o utilizzare un'implementazione opensource, ho potuto modificarlo per rendere i pixel bitmap della ImageView non appena li ho letti, ma sembra uno sforzo gigantesco per quello che intendo.
Il problema principale del primo approccio è che i dati dell'immagine non arrivano in pixel retti, ma sono compressi e organizzati in base al formato dell'immagine che utilizzo (ad esempio PNG). Anche se mi occupassi di singoli pacchetti, lo sforzo maggiore sarebbe quello di convertire quei dati in valori di colore dei pixel prima del rendering, il che equivale a scrivere un decodificatore per il suddetto formato di immagine (questo sarebbe eccessivo). Stavo piuttosto cercando un metodo/libreria esistente che sarebbe più semplice. Il tuo secondo approccio, ovviamente, è molto più semplice. L'ho mantenuto come opzione di backup se non funziona nient'altro :) –