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

Cha*_*Wei 7 android bytearray webview

大家!我已将大量图片压缩为"pictures.zip"文件.我想将这些图片之一加载到WebView,如下所示:

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

这里,"abc.jpg"是一张已压缩为pictures.zip文件的图片.

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

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

  3. 此外,我不想将pitcture的字节编码为base64,然后将图像加载到WebView,因为这两种方式将非常慢.

Jak*_*ile 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");
}
Run Code Online (Sandbox Code Playgroud)

  • 我想请注意,您可以通过直接向load64()提供base64来进一步缩短(可能会提高性能); `String b64Image = Base64.encodeToString(image,Base64.DEFAULT);``web.loadData(b64Image,"image/jpeg","base64");` (4认同)