Sté*_*tte 53 android image webview android-webview
我正在尝试在我的webview中显示本地图像:
String data = "<body>" + "<img src=\"file:///android_asset/large_image.png\"/></body>";
webview.loadData(data, "text/html", "UTF-8");
Run Code Online (Sandbox Code Playgroud)
此代码不显示任何内容,而是:
webview.loadUrl("file:///android_asset/large_image.jpg");
Run Code Online (Sandbox Code Playgroud)
这个工作,但我需要有复杂的网页,而不仅仅是一张图片.
有任何想法吗 ?
小智 66
在Webview中加载Html文件并将您的图像放入资产文件夹并使用Html读取该图像文件.
<html>
<table>
<tr>
<td>
<img src="abc.gif" width="50px" alt="Hello">
</td>
</tr>
</table>
</html>
Run Code Online (Sandbox Code Playgroud)
现在在Webview中加载该Html文件
webview.loadUrl("file:///android_asset/abc.html");
Run Code Online (Sandbox Code Playgroud)
Zai*_*Ali 46
你也可以试试
String data = "<body>" + "<img src=\"large_image.png\"/></body>";
webView.loadDataWithBaseURL("file:///android_asset/",data , "text/html", "utf-8",null);
Run Code Online (Sandbox Code Playgroud)
nox*_*oxo 26
一种方便的方法(经常被遗忘)是在HTML内容中使用base64嵌入式图像.这也适用于移动Webkit浏览器(IOS,Android ..).
使用这种方法的关键是你可以在HTML内容上嵌入图像,而不是使用从webview到受限文件系统的图像链接.
<img src="data:image/jpg;base64,xxxxxxxxxxxxxxxxxxxxxxxxxxxx"/>
xxxxx = base64 encoded string of images bytes
Run Code Online (Sandbox Code Playgroud)
如果要从文件系统提供(base64嵌入式)图像数据,可以举例如下:
1)在Android中使用ContentProvider - 它将提供base64格式的图像字符串.
<img src="content://.............."/>
Run Code Online (Sandbox Code Playgroud)
2)或者您可以使用JSOUP或类似的DOM解析器(在将其设置为webview之前)预处理HTML并使用正确的base64编码图像调整图像src.
这种方法的缺点是将图像转换为base64字符串所包含的开销,当然还包括将更大的HTML数据转换为webview.
使用此方法.
mview.loadDataWithBaseURL(folder.getAbsolutePath(), content, "text/html", "windows-1252", "");
Run Code Online (Sandbox Code Playgroud)
folder.getAbsolutePath()
可以是"file:///android_asset"
或只是"/"