如何将存储在字节数组中的图像加载到WebView?

时间:2010-12-21 01:48:40

标签: android webview bytearray

大家好!我已将大量图片压缩为“pictures.zip”文件。我想将其中一张图片加载到这样的WebView中:

WebView wv = (WebView)findViewById(R.id.WebView01);
wv.loadDataWithBaseURL(null,"<img src=\"abc.jpg\">", "text/html", "UTF-8", null);

此处,“abc.jpg”是已压缩为pictures.zip文件的图片。

  1. 我只想解压缩zip文件中的图片并获取 图片的字节流,然后 将图像加载到WebView 字节流。

  2. 我不想解压缩 图片来自zip文件然后 将其保存到SD卡然后加载它。

  3. 而且,我不想编码 pitcture的字节到base64然后 将图像加载到WebView 或者,因为这两种方式都会 非常慢。

2 个答案:

答案 0 :(得分:6)

据我所知,没有办法满足所有这三项要求。如果您不想将其写入存储,Base64对其进行编码并将其直接加载到图像标签中可能是您​​最好的选择,尽管您仍然可以将其写入内部存储并在Webview中显示。

private static final String HTML_FORMAT = "<img src=\"data:image/jpeg;base64,%1$s\" />";

private static void openJpeg(WebView web, byte[] image)
{
    String b64Image = Base64.encode(image, Base64.DEFAULT);
    String html = String.format(HTML_FORMAT, b64Image);
    web.loadData(html, "text/html", "utf-8");
}

答案 1 :(得分:1)

我建议在您的应用程序中使用可嵌入的HTTP侦听器,侦听特定端口(例如8001),然后在HTML页面中将图像引用到侦听器。例如,寻找Test.png会是这样的:

http://localhost:8001/Test.png

此请求将在您的侦听器中结束,您可以在其中查看您的zip文件或数据库,然后将字节流返回到HTTP响应流!

我真的建议你看一下NanoHTTPD(http://elonen.iki.fi/code/nanohttpd/)并尝试为你的目标实现自定义服务方法。

我希望这会有所帮助: - )