2012-06-01 11 views
5

Ich verwende ein WebView zur Anzeige eines kartenähnlichen Bildes aufgrund der integrierten Schwenk- und Zoomfunktion. Ich muss jedoch einige andere Informationen (Markierungen usw.) an bestimmten Punkten auf dem Kartenbild einblenden und alles anzeigen.Android: Wie man ein Bitmap in einem WebView anzeigt?

Also nehme ich meine Basiskarte Bild als Bitmap, und überlagere meine anderen Bilder über diese (mit Canvas und mehr Bitmaps), gibt mir eine endgültige Bitmap mit allen Informationen. Da ich das Bild zur Laufzeit bearbeiten muss, kann ich keine vorgefertigte Datei verwenden. Das Überlagern von Bitmaps ist nicht das Problem, das Problem ist, dass ich nicht weiß, wie man das resultierende Bild mit Schwenk- und Zoom-Funktionen leicht anzeigen kann.

Gibt es eine Möglichkeit, ein Bitmap mit einem WebView anzuzeigen? Oder irgendwelche anderen Vorschläge?

+0

Es gibt ziemlich schöne Bibliotheken, die das Schwenken und Zoomen in Android unterstützen. Ein Beispiel - https://github.com/sephiroth74/ImageViewZoom – Heitara

Antwort

20

den Link von itsrajesh4uguys benutzen, habe ich diesen Code-Snippet erstellt:

// Desired Bitmap and the html code, where you want to place it 
Bitmap bitmap = YOUR_BITMAP; 
String html="<html><body><img src='{IMAGE_PLACEHOLDER}' /></body></html>"; 

// Convert bitmap to Base64 encoded image for web 
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 
bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream); 
byte[] byteArray = byteArrayOutputStream.toByteArray(); 
String imgageBase64 = Base64.encodeToString(byteArray, Base64.DEFAULT); 
    String image = "data:image/png;base64," + imgageBase64; 

// Use image for the img src parameter in your html and load to webview 
html = html.replace("{IMAGE_PLACEHOLDER}", image); 
webview.loadDataWithBaseURL("file:///android_asset/", html, "text/html", "utf-8", ""); 
+0

haben Sie diesen Code getestet? scheint nicht zu funktionieren – 2cupsOfTech

+0

umschließt das Bild String mit Tag behoben das Problem – 2cupsOfTech

+0

danke für Ihren Kommentar. Du hast recht. Ich fügte meiner Antwort eine zusätzliche Zeile hinzu, um die Lösung zu erklären. –

-1

Sie benötigen Bitmap nicht, nur seinen Namen genug ist. Versuchen Sie Folgendes:

html = "<html><img src=\"" + imageUrl 
         + "\"></html>"; 
final WebView webView = (WebView) view 
        .findViewById(R.id.yourWebView); 
wvImageView.getSettings().setJavaScriptEnabled(true); 
wvImageView.loadDataWithBaseURL("", html, "text/html", "utf-8", ""); 

Dies sollte Ihr Bild auf WebView anzeigen. Wenn Sie Einrichtung Zoomen zur Verfügung stellen möchten, versuchen Sie dies:

webView.getSettings().setSupportZoom(true); 
webView.getSettings().setBuiltInZoomControls(true); 
+0

Ist dieser Code zum Anzeigen eines Bildes aus einer URL? Das versuche ich nicht. – breadbin

+0

Der obige Code erfordert nur den vollständig qualifizierten Pfad zu Ihrem Image. Versuchen Sie imagePath zu geben und prüfen Sie, ob es funktioniert. – Shrikant

+0

Also musste ich meine modifizierte Bitmap als Datei speichern und dann lesen? – breadbin

1

Die Antwort scheint zu sein: nein, ein lokales Bitmap-Objekt in einer Webansicht angezeigt wird, ohne dass es zu einer Datei zu speichern, ist nicht möglich.

+2

Falsch. Erstellen Sie ein Img-Tag, um Bilder wie HTML-E-Mails mit eingebetteten Bildern anzuzeigen. Verwendet Tag, aber src ist keine URL, aber Base64-codierte Bilddaten. img src kann noch über Javascript geändert werden. – JSON

+0

Es ist möglich, eine Bitmap zu laden und anzuzeigen. Überprüfen Sie Tipi SONY Antwort. Es erklärt, wie man das macht. – Heitara

2

Sie Platzhalter nicht brauchen, wenn u Bild in webview

Sie können in direkt die DataURL laden laden möchten das Webview. Für Beispiel:

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 
bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream); 
byte[] byteArray = byteArrayOutputStream.toByteArray(); 
String imgageBase64 = Base64.encodeToString(byteArray, Base64.DEFAULT); 
    String dataURL= "data:image/png;base64," + imgageBase64; 

webview.loadUrl(dataURL); //pass the bitmap base64 dataurl in URL parameter 

Hoffe es hilft anderen! :-)

Verwandte Themen