Image (Bitmap) in String (für XML)

AquaBall

Top Contributor
Wie kann ich ein Bitmap in einen printable-String unwandeln?

Hintergrund:
Ich hol mir aus dem Internet ein (dynamisch erstelles) Bild, das als BitMap empfangen wird.
Java:
Bitmap bitmap = BitmapFactory.decodeStream((InputStream)new URL(imageUrl).getContent());
Das kann ich auch wunderbar an der richtigen Position anzeigen.

Jetzt würde ich es gerne in meiner ParameterDatei (XML) speichern.
XML funktioniert perfekt.
Das Bitmap müsste aber zuerst in einer String aus druckbarenZeichen, oder Hex-code, ... umgewandelt werden, damit ich diesen String dann in XML speichern kann.
Eigentlich ist das ja eine Standard Codierung für emails, ..., aber finde keine Funktion encodeToString(bitmap).
 
Direktes encodieren einer Bitmap gibt es vielleicht nicht, aber eine Bitmap ist nix anderes als binäre Daten. Binäre Daten werden in XML entweder als base64 oder als hex encodiert. Dafür gibt es Methoden.
 
Java:
Base64.encodeToString(bitmap, BIND_AUTO_CREATE)
funktioniert aber nicht für Bitmap.
Und ich schaff es nicht, Bitmap auf byte[] zu konvertieren.
 
Sogar das bringt nichts:
Java:
Bitmap bitmap = BitmapFactory.decodeStream((InputStream)new URL(imageUrl).getContent());
ByteArrayOutputStream bStream = new ByteArrayOutputStream();
ObjectOutputStream oStream = new ObjectOutputStream( bStream );
oStream.writeObject ( bitmap );
bildStirng = Base64.encodeToString(bStream.toByteArray(),Base64.DEFAULT);

[WR]04-17 17:18:13.186: W/System.err(5452): java.io.NotSerializableException: android.graphics.Bitmap[/WR]
 
Du machst es Dir viel zu umständlich. Du brauchst das ganze Bitmap-/Object-Geraffel garnicht. Du hast das URL-Objekt. Davon kannst du mit openStream() die binären Daten über den InputStream lesen.
 
AquaBall hat gesagt.:
Muss ich mal neu überdenken.
Weil letztendlich das Bitmap das Wesentliche für meine Android-Anwendung ist.

mal versuchen ...
Du musst hier gedanklich zwischen zwei Aspekten trennen. Für die Darstellung brauchst Du natürlich die Bitmap. Für das Speichern/Laden brauchst du es nicht. Da sind es wie gesagt einfach nur encodierte Binärdaten.

Wenn die Image-Url auf ein wie auch immer verfügbares Image zeigt, z.B. es liegt irgendwo auf einem Webserver oder auf dem Speicher des Geräts, reicht es ja vielleicht auch, einfach den String in der Parameterdatei zu speichern.
 
Das wäre natürlich möglich, so läufts auch jetzt.
Aber das erfordert eine ständige Internetverbindung, und Datenverkehr.

Das Bild ändert sich aber (logischerweise) nur, wenn sich der String ändert.
Je nach Benutzerverhalten vielleicht 1 pro Woche, oder 1 im Jahr.

Also erkenn ich das im Programm, und kann statt hunderten(?) Internetzugriffen (bei jedem Programmschritt mit Bildschirmwechsel) täglich, auf 10 Zugriffe im Monat oder gar Jahr reduzieren.

Deshalb will ich das Bild zwischenspeichern.
 

Neue Themen


Zurück
Oben