选择展示图片

图片选择

使用html的input标签,type设置为file就是文件选择,accept属性控制用户可选择的文件类型,设置multiple可多选文件。

 <input type="file" accept="image/*" multiple >

通常情况下我们只是需要这个选择文件的功能,不需要着原始丑陋的UI。所以一般情况下是设置这个标签的样式 display为none,然后自己写UI,要选择文件功能时,就用click方法触发这个文件选择标签的文件选择功能。

  <input type="file" accept="image/*" onchange="handlefiles(this.files)" style="display:none" multiple id="fileElem">
  let fileElem=document.querySelector('#fileElem')
  fileElem.click();

图片显示

方法一:window.URL

详情看下方注释

//不同的浏览器URL对象名不一样,所以需要统一一下
  window.URL=window.URL||window.webkitURL;
  function firstUpload(files){
    for(let i=0;i<files.length;i++){
      let file=files[i];
      let li=document.createElement('li');
      let img=document.createElement('img');
      //通过URL兑对象上的createObjectURL方法来创建URL复制给img标签的src
      img.src=window.URL.createObjectURL(file);
      img.onload=function(){
      //因为每次创建的URL对象如果不手动释放掉,在浏览器未退出文档前不会释放内存,造成内存占用,所以需要用revokeObjectURL主动释放内存
        window.URL.revokeObjectURL(this.src);
      }
      li.appendChild(img);
      list.insertBefore(li,list.firstChild);
    }
  }

方法二:fileReader

详情看下方注释

  function secondUpload(files){
    for(let i=0;i<files.length;i++){
      let file=files[i];
      let li=document.createElement('li');
      let img=document.createElement('img');
      //使用filReader对象的readAsDataURL来将用户选择的文件转化为URL给img标签使用,展示图片
      let reader=new FileReader();
      reader.readAsDataURL(file);
      reader.onload=function(){
        img.src=reader.result;
      }
      li.appendChild(img);
      list.insertBefore(li,list.firstChild)
    }
  }

全部代码展示

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <input type="file" accept="image/*" onchange="handlefiles(this.files)" style="display:none" multiple id="fileElem">
  <button onclick="onClick('first')">方法一上传</button>
  <button onclick="onClick('second')">方法二上传</button>
  <ul id="list">

  </ul>
</body>
<script>
  window.URL=window.URL||window.webkitURL;
  let fileElem=document.querySelector('#fileElem')
  let list=document.querySelector('#list')
  let uploadType=''
  function onClick(type){
    uploadType=type;
    fileElem.click();
  };
  function handlefiles(files){
    if(!files.length){
      return;
    }
    uploadType=='first'?(firstUpload(files)):(secondUpload(files))
  }
  // 第一种显示图片的方法
  window.URL=window.URL||window.webkitURL;
  function firstUpload(files){
    for(let i=0;i<files.length;i++){
      let file=files[i];
      let li=document.createElement('li');
      let img=document.createElement('img');
      img.src=window.URL.createObjectURL(file);
      img.onload=function(){
        window.URL.revokeObjectURL(this.src);
      }
      li.appendChild(img);
      list.insertBefore(li,list.firstChild);
    }
  }
  // 方法二
  function secondUpload(files){
    for(let i=0;i<files.length;i++){
      let file=files[i];
      let li=document.createElement('li');
      let img=document.createElement('img');
      let reader=new FileReader();
      reader.readAsDataURL(file);
      reader.onload=function(){
        img.src=reader.result;
      }
      li.appendChild(img);
      list.insertBefore(li,list.firstChild)
    }
  }
</script>
</html>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Android 应用程序中选择图片并将其返回并展示在应用程序中,可以使用以下代码: 1. 在您的布局文件中添加一个 ImageView 元素,用于显示选定的图像: ```xml <ImageView android:id="@+id/imageView" android:layout_width="match_parent" android:layout_height="wrap_content" android:scaleType="centerCrop" android:adjustViewBounds="true" android:src="@drawable/placeholder_image" /> ``` 在这里,我们使用了一个占位符图像,因为用户还没有选择图像。 2. 添加以下代码来启动活动并选择图像: ```java // 定义请求码 private static final int REQUEST_CODE_PICK_IMAGE = 1; // 启动相册并选择图片 Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(intent, REQUEST_CODE_PICK_IMAGE); ``` 在这里,我们使用了一个请求码,以便在返回结果时可以标识它。 3. 在 onActivityResult 方法中处理返回的结果: ```java @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE_PICK_IMAGE && resultCode == RESULT_OK && data != null) { // 获取所选图像的 URI Uri imageUri = data.getData(); // 将图像显示在 ImageView 中 ImageView imageView = findViewById(R.id.imageView); imageView.setImageURI(imageUri); } } ``` 在这里,我们使用了 URI 来设置 ImageView 的图像。需要注意的是,如果图像太大,可能需要在设置 ImageView 的前景之前对其进行缩放。 4. 最后,别忘了在 AndroidManifest.xml 文件中添加以下权限: ```xml <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> ``` 这是为了允许应用程序读取设备存储中的图像。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值