Sto lavorando su Android e sto cercando di scaricare e visualizzare una favicon (.ICO) da un sito Web su un ImageView.C'è un modo per decodificare un file .ICO ad una risoluzione maggiore di 16x16?
Finora sono riuscito a leggere il file .ico da un sito Web utilizzando una connessione HTTP, recuperarlo come InputStream. Quindi uso un BitmapFactory per decodificare il flusso in un Bitmap e visualizzarlo su ImageView. Ecco il codice:
public Bitmap getBitmapFromURL(URL src) {
try {
URL url = new URL("http", "www.google.com", "/favicon.ico");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
BitmapFactory.Options options = new BitmapFactory.Options();
Bitmap myBitmap = BitmapFactory.decodeStream(input, null, options);
return myBitmap;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
Il problema è che la decodifica del inputStream restituisce sempre una piccola bitmap 16x16. Se ho ben capito, un singolo file .ICO può memorizzare diverse risoluzioni di immagine, come 32x32 e 64x64. La mia domanda è, c'è un modo per decodificare il 32x32 o il 64x64 Bitmap invece del 16x16?
Inoltre, se non esiste una soluzione con BitmapFactory, esiste una libreria o un codice java per fare ciò?
NOTA: Non voglio ridimensionare il bitmap, voglio un 32x32 (o più grande) risoluzione senza perdere la qualità dell'immagine da stretching.
Grazie in anticipo.
Forse questo specifico .ico contiene solo una versione 16x16? –
Non penso, se digiti www.google.com/favicon.ico sul tuo browser ti presenta un'immagine 32x32. A meno che non manchi qualcosa, mostra che almeno un'immagine 32x32 è codificata nel file. BitmapFactory è o, per qualche ragione, ridimensionamento della versione 32x32, o c'è un'altra versione, un 16x16 anche codificato nel file e BitmapFactory sta scegliendo di decodificarlo. –
@DavidNeto Non sapevo che si potesse leggere e decodificare un file Ico in questo modo. Puoi visualizzare effettivamente l'immagine 16x16 che ottieni? – quinestor