gpt4 book ai didi

Android WebClient,通过WebResourceResponse 返回图像资源 - 不显示图像

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:17:37 25 4
gpt4 key购买 nike

我的 WebView 有一个简单的 WebViewClient 并且正在覆盖 shouldInterceptRequest:(不是实际代码)

public class WebViewClientBook extends WebViewClient
{
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url)
{
File file = new File("pathToTheFile.jpeg");
FileInputStream inputStream = new FileInputStream(file);

return new WebResourceResponse("image/jpeg", "UTF-8", inputStream);
}
}

出于某种原因,WebClient 无法显示图像...我认为这可能与不正确的编码有关:UTF-8。

有什么建议可以替代吗?

谢谢!

最佳答案

你做错了。您有 2 种方法可以做到这一点,这取决于接收图像的对象。

情况 1:您想返回一个字节数组。在这种情况下,您应该使用 Javascript 处理它并将其解析为字符串,然后将其分配给 webView 上您的标签的 src 字段。

    File imagefile = new File(otherPath);
FileInputStream fis = null;
try {
fis = new FileInputStream(imagefile);
finall = fis;
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Bitmap bi = BitmapFactory.decodeStream(fis);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
//PNG OR THE FORMAT YOU WANT
bi.compress(Bitmap.CompressFormat.PNG, 100, baos);

byte[] data = baos.toByteArray();
InputStream is = new ByteArrayInputStream(finaldata);
return new WebResourceResponse("text/html", "UTF-8", is);

情况 2:您解析 Activity 上的所有内容并传递完整的 html 代码,因此在 webView 中您将拥有一个将使用此数据更新的 innerHTML 属性。

        File imagefile = new File(otherPath);
FileInputStream fis = null;
try {
fis = new FileInputStream(imagefile);
finall = fis;
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Bitmap bi = BitmapFactory.decodeStream(fis);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
//PNG OR THE FORMAT YOU WANT
bi.compress(Bitmap.CompressFormat.PNG, 100, baos);

byte[] data = baos.toByteArray();
String image64 = Base64.encodeToString(data, Base64.DEFAULT);
String customHtml = "<html><body><h1>Hello, WebView</h1>" +
"<h2><img src=\"data:image/jpeg;base64," + image64 + "\" /></img></h2></body></html>";
InputStream is = new ByteArrayInputStream(finaldata);
return new WebResourceResponse("text/html", "UTF-8", is);

如果您只想加载图像,您可以随时执行 webView.loadData(String data, String mimeType, String encoding)

希望对您有所帮助,我刚开始使用它

关于Android WebClient,通过WebResourceResponse 返回图像资源 - 不显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13807968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com