Android – 在webview中的本地图像
我试图在我的webview中显示本地图像:
String data = "<body>" + "<img src=\"file:///android_asset/large_image.png\"/></body>"; webview.loadData(data, "text/html", "UTF-8");
此代码不显示任何内容,而不是:
webview.loadUrl("file:///android_asset/large_image.jpg");
这一个工作,但我需要有复杂的网页,而不仅仅是一个图片。
有任何想法吗 ?
在Webview中加载Html文件,并将您的图像放在资产文件夹中,并使用Html读取该图像文件。
<html> <table> <tr> <td> <img src="abc.gif" width="50px" alt="Hello"> </td> </tr> </table> </html>
现在在Webview中加载该HTML文件
webview.loadUrl("file:///android_asset/abc.html");
你也可以试试
String data = "<body>" + "<img src=\"large_image.png\"/></body>"; webView.loadDataWithBaseURL("file:///android_asset/",data , "text/html", "utf-8",null);
一个方便的方法(通常被遗忘)是在HTML内容中使用base64embedded式图像。 这也适用于移动Webkit浏览器(IOS,Android ..)。
使用这种方法的一点是,您可以在HTML内容中embedded图像,而不是从webview到受限制的文件系统的图像链接。
<img src="data:image/jpg;base64,xxxxxxxxxxxxxxxxxxxxxxxxxxxx"/> xxxxx = base64 encoded string of images bytes
如果你想从文件系统提供(base64embedded式)图像数据,你可以例如:
1)在Android中使用ContentProvider – 它将提供base64格式的图像string。
<img src="content://.............."/>
2)或者,您可以使用JSOUP或类似的DOMparsing器(在将其设置为webview之前)预处理HTML,并使用正确的base64编码图像调整图像src。
这种方法的缺点是将图像转换为base64string,当然还有更大的HTML数据到webview。
使用这种方法。
mview.loadDataWithBaseURL(folder.getAbsolutePath(), content, "text/html", "windows-1252", "");
folder.getAbsolutePath()
可以是"file:///android_asset"
或者只是"/"
我认为你的代码中有一个\
缺less
String data = "<body>" + "<img src=\\"file:///android_asset/large_image.png\"/></body>";
webView.loadDataWithBaseURL("file:///android_asset/", sourse, "text/html", "UTF-8", null);
对我来说最好的办法是创build我的.html
文件,所有文本和图像在MS word中,并将文件保存为.html
文件,并将.html
文件和相应的附件文件夹复制到assets文件夹中,并给出资产文件夹中的.html文件到webview.loadUrl()
…以下是您需要做的事情…
WebView webview = (WebView) findViewById(R.id.webView1); webview.loadUrl("file:///android_asset/learning1/learning1.htm");
Zain的解决scheme为我工作。 我忘了添加我的文件夹www有HTML文件和其他子文件夹的CSS和图像等
webView.loadDataWithBaseURL("file:///android_asset/www/",data , "text/html", "utf-8",null);
..
最简单直接的方法是用像kompozer
这样的html编辑器或任何你喜欢的东西来创build一个html文件。
把你的HTML文件放在assets文件夹中,并调用webView.loadUrl(filename)
。 资产文件夹还应该包含您在HTML文件中引用的所有图片。
在html文件中提前修正图像的path,只记下纯文件名。 传递给loadUrl的文件名必须以file:///android_asset/
为前缀。
如果图片或文件没有加载,检查文件名空白 , 连字符和其他奇怪的东西,并更改文件名。