当前位置: 首页 > 知识库问答 >
问题:

如何在android webview中显示图像

仲浩歌
2023-03-14

我正在做一个android项目(java),在这个项目中,我想使用webview来显示一个通过使用FileChooser从Phone的存储中选择的图像。在我的java代码中,我有

package com.example.test;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {
  ImageView imageView;
  Button btn_filePicker;
  Intent myFileIntent;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      imageView = (ImageView)findViewById(R.id.imageView);
      btn_filePicker = (Button)findViewById(R.id.btn_filePicker);

      btn_filePicker.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View view) {
              myFileIntent = new Intent(Intent.ACTION_GET_CONTENT);
              myFileIntent.setType("*/*");

              startActivityForResult(myFileIntent, 10);

          }
      });
  }

  @Override
  protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {

      switch (requestCode) {
          case 10:
              if (resultCode == RESULT_OK) {
                  String path = data.getData().getPath();
                  Uri uri = data.getData();

                  imageView.setImageURI(uri);
                  WebView webView = (WebView) findViewById(R.id.webview);
                  WebSettings webSettings = webView.getSettings();
                  webSettings.setJavaScriptEnabled(true);
                  webView.loadUrl("file:///android_asset/index.html");
                  webView.setWebViewClient(new WebViewClient(){
                      public void onPageFinished(WebView view, String url){
                          webView.loadUrl("javascript:init('"+ uri +"')");
                      }
                  });
              }
              break;
      }
  }
} 
<html>
<head>
    <title>
        Hi
    </title>
</head>
<body>
<h1>path</h1>
<img id="image">
<script>
    function init(val){
        document.write(val);
        var img_input = document.getElementById("image");
        img_input.src = val;
    }
    init();
</script>
</body>
</html>

欢迎任何建议。

共有1个答案

穆招
2023-03-14
//Convert it as Bitmap
Bitmap bitmap = null;
String image = null; //Base64 Encoded Image
try {
    bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), uri);

    // Convert bitmap to Base64 encoded image for web
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
    byte[] byteArray = byteArrayOutputStream.toByteArray();
    String imgageBase64 = Base64.encodeToString(byteArray, Base64.DEFAULT);
    image = "data:image/png;base64," + imgageBase64;

} catch (IOException e) {
    e.printStackTrace();
}

现在,修改您的OnPageFinished

webView.setWebViewClient(new WebViewClient() {
    public void onPageFinished(WebView view, String url) {
        if (image_final != null)
            webView.loadUrl("javascript:init('" + image_final + "')");
    }
});

希望有帮助!

 类似资料:
  • 问题内容: 我有一个图像,我想在applet中显示它,问题是图像无法显示。我的代码有问题吗? 谢谢… 这是我的代码: 问题答案: 我怀疑您做错了,这应该很简单: HTML / applet元素的内容是什么?图片的名称是什么?图像与HTML位于同一目录中吗? 更新1 代码的第二行(已更改)将尝试将文件加载到与HTML相同的目录中。 当然,您可能需要添加一个来跟踪图像的加载,因为该方法立即返回(现在)

  • 这里是交易,我必须从sql server获取一个文本值,它是一个编码图像,存储在字符串中,然后我可以通过解码将其转换为图像类型,问题是,我如何在asp:image中显示解码后的图像?因为我希望这个组件有一个.image属性,我可以把图像放进去,它会像那样显示,但它只有.ImageUrl,如果图像存储在我的电脑中,它会工作得很好,但它不是,我尝试将它设为二进制字符串,然后使用和asp:image-u

  • 有人能给我一个如何使用Apache PDFBox 2.0.3在PDF文件中显示图像的例子吗? 提前谢谢

  • 问题内容: 我很难弄清楚如何在Java小程序中显示Image(或ImageIcon)。以下是我的代码。图片(test.bmp)确实存在并且在D驱动器上,但是当我运行它时,我得到的applet窗口中没有任何内容。有人可以告诉我要显示ImageIcon缺少的内容吗? 谢谢,史蒂夫。 问题答案: 从服务器运行小程序时,无法通过绝对本地文件路径引用映像。 使用ImageIcon(URL位置)构造函数, 并

  • 问题内容: 我想在碧玉报告中显示图像。我在.jrxml上具有以下内容: 图像logo.jpg与.jrxml位于同一目录中。只是说这对我不起作用。我在Google上搜索了一下,发现jasper报告将我放在.jrxml中的内容视为到JVM目录的相对路径,并且要更改此设置,我需要将返回文件的FileResolver作为“ REPORT_FILE_RESOLVER”参数传递。因此,我在.java中进行了以

  • 我试图在我的readme.md中显示两张照片之间的比较,这就是为什么我想并排显示它们。以下是这两个图像当前的放置方式。我想并排显示两个日光化配色方案,而不是顶部和底部。非常感谢您的帮助,谢谢!