首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何用WebView loaddata显示图片?

如何用WebView loaddata显示图片?
EN

Stack Overflow用户
提问于 2011-03-11 07:19:28
回答 2查看 39.5K关注 0票数 17

我有以下几点

代码语言:javascript
复制
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);

但是当我运行它时,我看到的只是一个蓝色的问号,而不是我的图像。使用loadData在WebView中显示图像的正确方式是什么?

编辑:有没有办法在不将pageData作为<img src="http://example.com/my.jpg/">传递的情况下做到这一点?如果loadData只能处理“文本/html”,那么它接受mime类型似乎很愚蠢。特别是因为javadoc列出了"image/jpeg“作为您可能传入的示例mime类型。

EN

回答 2

Stack Overflow用户

发布于 2011-03-17 13:34:52

可以将base64编码的图像数据直接嵌入到<img>-tag中:

代码语言:javascript
复制
  <img src="data:image/jpeg;base64,base64DataHere" />

下面是一个创建<img>数据的例子(我使用字节数组代替原始数据的字符串,因为在我的测试中,作为源的字符串不起作用--我假设字符串不能处理二进制数据):

代码语言:javascript
复制
  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,您可以复制并将其集成到您的应用程序中。它应该可以与旧的API版本一起工作。

或者,您可以使用一个替代类来进行base64编码,比如。

下面是检索、转换和显示图像的完整工作代码:

代码语言:javascript
复制
  byte[] imageRaw = null;
  try {
     URL url = new URL("http://some.domain.tld/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);
票数 41
EN

Stack Overflow用户

发布于 2012-11-22 20:48:32

使用这个..解决webview加载图片的问题。

代码语言:javascript
复制
    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");
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5267124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档