gpt4 book ai didi

android - 如何使用 WebView 加载数据显示图像?

转载 作者:IT老高 更新时间:2023-10-28 23:28:37 27 4
gpt4 key购买 nike

我有以下内容

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 只能处理“text/html”,那么它采用 mime 类型似乎很愚蠢。特别是因为 javadoc 将“image/jpeg”列为您可能传入的示例 mime 类型。

最佳答案

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

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

这里是创建 <img> 的示例-tag(我使用字节数组而不是字符串作为原始数据,因为在我的测试中,作为源的字符串不起作用 - 我假设字符串无法处理二进制数据):

  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 版本,您可以复制 sourcefile from git并将其集成到您的应用程序中。它应该适用于较旧的 API 版本。

或者您可以使用 base64 编码的替代类之一,例如 Base64Coder .


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

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

关于android - 如何使用 WebView 加载数据显示图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5267124/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com