如何使用WebView loaddata显示图像?

我有以下

String urlStr = "http://example.com/my.jpg" String mimeType = "image/jpeg"; String encoding = null; String pageData = ""; // This is data read in from an HttpURLConnection webview.loadDataWithBaseURL(urlStr, pageData, mimeType, encoding, urlStr); 

但是当我运行这个,我看到的只是一个蓝色的问号,而不是我的形象。 什么是正确的方式来处理在WebView与loadData显示图像?

编辑:有没有办法做到这一点,而不是传递pageData为<img src="http://example.com/my.jpg/"> ? 如果loadData只能处理“text / html”,那么看起来很愚蠢。 特别是因为javadoc列举了“image / jpeg”作为你可能传入的MIMEtypes的一个例子。

Solutions Collecting From Web of "如何使用WebView loaddata显示图像?"

可以将base64编码的imagedata直接embedded<img> -tag:

  <img src="data:image/jpeg;base64,base64DataHere" /> 

这里有一个创build<img> -tag(我使用字节数组而不是string作为原始数据的例子,因为在我的testing中,一个String作为源不起作用 – 我假定String不能处理二进制数据):

  byte[] imageRaw = yourImage; String image64 = Base64.encodeToString(imageRaw, Base64.DEFAULT); String pageData = "<img src=\"data:image/jpeg;base64," + image64 + "\" />"; 

Base64类是在API v.2.2中引入的 – 对于较老的API版本,您可以从git复制源文件并将其集成到您的应用程序中。 它应该使用较旧的API版本。

或者,您可以使用Base64编码的其中一个替代类,如Base64Coder


这里的检索,转换和显示图像的完整工作代码:

  byte[] imageRaw = null; try { URL url = new URL("http://img.androidcookie.com/android/somePicture.jpg"); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); InputStream in = new BufferedInputStream(urlConnection.getInputStream()); ByteArrayOutputStream out = new ByteArrayOutputStream(); int c; while ((c = in.read()) != -1) { out.write(c); } out.flush(); imageRaw = out.toByteArray(); urlConnection.disconnect(); in.close(); out.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } String image64 = Base64.encodeToString(imageRaw, Base64.DEFAULT); String urlStr = "http://example.com/my.jpg"; String mimeType = "text/html"; String encoding = null; String pageData = "<img src=\"data:image/jpeg;base64," + image64 + "\" />"; WebView wv; wv = (WebView) findViewById(R.id.webview); wv.loadDataWithBaseURL(urlStr, pageData, mimeType, encoding, urlStr); 
  Use this.. solve the problem of images load in webview. WebView webView = (WebView)findViewById(R.id.webView1); webView.getSettings().setBuiltInZoomControls(true); webView.getSettings().setJavaScriptEnabled(true); String url ="Path of image"; String imgSrcHtml = "<html><img src='" + url + "' /></html>"; webView.loadData(imgSrcHtml, "text/html", "UTF-8");