Ich arbeite an Android und versuche, ein Favicon (.ICO) von einer Website auf einem ImageView herunterzuladen und anzuzeigen.Gibt es eine Möglichkeit, eine .ICO-Datei auf eine Auflösung größer als 16x16 zu dekodieren?
Bis jetzt habe ich es geschafft, die .ico von einer Website mit einer HTTP-Verbindung zu lesen, es als InputStream abrufen. Dann verwende ich eine BitmapFactory, um den Stream in eine Bitmap zu decodieren und auf dem ImageView anzuzeigen. Hier ist der Code:
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;
}
}
Das Problem ist, dass die Decodierung der input gibt immer einen kleinen 16x16 Bitmap. Wenn ich gut verstanden habe, kann eine einzelne .ICO-Datei unterschiedliche Bildauflösungen wie 32x32 und 64x64 speichern. Meine Frage ist, gibt es eine Möglichkeit, die 32x32 oder 64x64 Bitmap anstelle von 16x16 zu dekodieren?
Wenn es keine Lösung mit BitmapFactory gibt, gibt es dafür einen Bibliotheks- oder Java-Code?
HINWEIS: Ich möchte die Bitmap nicht verkleinern, ich möchte eine 32x32 (oder größere) Auflösung, ohne die Bildqualität durch Strecken zu verlieren.
Vielen Dank im Voraus.
Vielleicht enthält diese spezifische .ico nur eine 16x16-Version? –
Ich denke nicht, wenn Sie in Ihrem Browser www.google.com/favicon.ico eingeben, wird Ihnen ein 32x32-Bild angezeigt. Wenn ich etwas nicht vermisse, zeigt es, dass mindestens ein 32x32 Bild in der Datei kodiert ist. Die BitmapFactory ist entweder, aus irgendeinem Grund, die 32x32-Version herunterzuskalieren, oder es gibt eine andere Version, eine 16x16, die ebenfalls in der Datei kodiert ist und die BitmapFactory wählt, um diese zu entschlüsseln. –
@DavidNeto Ich wusste nicht, dass Sie auf diese Weise eine Ico-Datei lesen und dekodieren können. Kannst du das 16x16-Bild, das du bekommst, tatsächlich anzeigen? – quinestor