图片预览的两种实现方式

做用户头像上传等类似功能的时候,经常会有预览选中图片的需求。在这里介绍两种实现预览的方式。

1.转化为base64格式

通过一种异步文件读取机制FileReader实现。具体步骤是:

  1. 创建FileReader对象
  2. 调用readAsDataURL函数读取文件内容
  3. 监听FileReader创建的实例对象的onload事件
  4. 通过e.target.result获取读取到的结果,值是base64格式的字符串
  5. 将读取到的结果赋值给img标签的src属性

实现代码:

  <input type="file">
  <img src="./avatar.jpg" alt="">
  <script>
    const img = document.querySelector('img')
    document.querySelector('input').addEventListener('change',function(e){
      // 获取选择的文件
      const fileList = e.target.files
      // 创建FileReader实例对象
      const reader = new FileReader()
      // 调用readAsDataURL函数读取文件内容
      reader.readAsDataURL(fileList[0])
      // 监听FileReader创建的实例对象的onload事件
      reader.addEventListener('load', () => {
        // 通过e.target.result获取读取到的结果,值是base64格式的字符串
        console.log(reader.result)
        img.src = reader.result
      })
    })
  </script>

运行结果:
在这里插入图片描述

2.使用内置的URL对象

使用内置的URL对象的createObjectURL方法能将图片对象存储到内存中,并返回一个地址。
具体实现步骤:

  1. 定义一个变量接收URL.createObjectURL(图片对象)返回的url地址
  2. 将这个变量存储的url地址赋值给img标签的src属性
  <input type="file">
  <img src="./avatar.jpg" alt="">
  <script>
    const img = document.querySelector('img')
    document.querySelector('input').addEventListener('change',function(e){
      // 获取选择的文件
      const fileList = e.target.files
      // 定义一个变量接收URL.createObjectURL(图片对象)返回的url地址
      const url = URL.createObjectURL(fileList[0])
      // 将这个变量存储的url地址赋值给img标签的src属性
      img.src = url
    })
  </script>

运行结果:
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
layui是一款基于jQuery的前端UI框架,它提供了丰富的组件和样式,方便开发者快速构建美观的网页界面。在layui中,点击图片预览可以通过使用其内置的图片预览组件实现。 要实现点击图片预览,可以按照以下步骤进行操作: 1. 引入layui库和相关样式文件。在HTML文件中,通过`<link>`标签引入layui的CSS样式文件和JS文件。 2. 创建一个包含图片的HTML元素。可以使用`<img>`标签来展示图片。 3. 给图片元素添加`lay-event`属性,并设置为`preview`。这样当点击图片时,layui会自动触发图片预览功能。 4. 初始化layui组件。在JS代码中,使用`layui.use()`方法初始化layui组件。 5. 监听图片预览事件。使用`element.on()`方法监听图片预览事件,并在回调函数中执行相应的操作。 下面是一个示例代码: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>点击图片预览</title> <link rel="stylesheet" href="path/to/layui/css/layui.css"> </head> <body> <img src="path/to/image.jpg" lay-event="preview"> <script src="path/to/jquery.js"></script> <script src="path/to/layui/layui.js"></script> <script> layui.use(['layer', 'element'], function(){ var element = layui.element; element.on('nav(preview)', function(elem){ var src = $(elem).attr('src'); // 在这里可以执行图片预览的操作,比如弹出一个大图预览窗口 layer.open({ type: 1, title: false, closeBtn: 0, area: 'auto', skin: 'layui-layer-nobg', // 没有背景色 shadeClose: true, content: '<img src="' + src + '" style="max-width:100%;">' }); }); }); </script> </body> </html> ``` 在上面的示例代码中,我们使用了`layer.open()`方法来实现图片预览的效果。当点击图片时,会弹出一个包含大图的浮层窗口。 希望以上内容能够帮助到你!如果还有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值