2012-06-01 142 views
5

由於內置的​​平移和縮放功能,我正在使用WebView來顯示類似地圖的圖像。但是,我需要在地圖圖像的某些點上疊加一些其他信息(標記等),並顯示所有這些信息。Android:如何在WebView中顯示位圖?

所以我把我的基本地圖圖像作爲位圖,並覆蓋我的其他圖像(使用畫布和更多位圖),給我一個包含所有信息的最終位圖。因爲我需要在運行時編輯圖像,所以我無法使用預先創建的文件。實現位圖覆蓋不是問題,問題是我不知道如何輕鬆顯示帶有平移和縮放功能的結果圖像。

有沒有辦法使用WebView顯示位圖?還是有其他建議?

+0

有很多漂亮的庫支持平移和縮放Android。一個例子 - https://github.com/sephiroth74/ImageViewZoom – Heitara

回答

20

使用從itsrajesh4uguys的鏈接,我已經創造了這個代碼片段:

// 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

你測試過這個代碼嗎?似乎沒有工作 – 2cupsOfTech

+0

封閉的圖像字符串與標籤解決了問題 – 2cupsOfTech

+0

感謝您的評論。你是對的。我在回答中添加了一行額外的解釋。 –

-1

你不要求位圖,只是它的名字就足夠了。請嘗試以下操作:

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", ""); 

這應該在WebView上顯示您的圖像。 如果要提供縮放工具,試試這個:

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

這是用於顯示從URL獲取的圖像的代碼?這不是我想要做的。 – breadbin

+0

上面的代碼只需要圖像的完全限定路徑。嘗試給imagePath並檢查它是否工作。 – Shrikant

+0

所以我需要將我的修改過的位圖保存爲一個文件,然後讀取它? – breadbin

1

的答案似乎是:沒有,顯示在網頁視圖本地的位圖對象,如果沒有它保存到一個文件,是不可能的。

+2

錯誤。創建Img標籤以顯示圖像,如帶有內聯圖像的html電子郵件。使用標記,但src不是url,而是base64編碼的圖像數據。 img src仍然可以通過javascript進行修改。 – JSON

+0

可以加載和顯示位圖。檢查圓錐形的SONY索尼答案。它解釋瞭如何做到這一點。 – Heitara

2

你不需要佔位如果u想在web視圖加載圖像

您可以直接加載dataurl在webview。 例如:

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 

希望它可以幫助別人! :-)