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/为前缀。

如果图片或文件没有加载,检查文件名空白连字符和其他奇怪的东西,并更改文件名。