html5实现图片预览和查看原图

html5从一开始就给开发者很多的期待,提供众多新的API,不用再想以前一样,为了实现某个功能写很多的代码。在以前,如果要实现图片预览会怎么做呢,因为为了安全的原因,web端的js是不能读取文件的本地真实路径的,那么只能将图片上传到服务器上,然后再拿到图片的链接,这样才能实现图片预览。而服务器呢,比如有两个文件夹,一个是临时文件夹,一个是正式文件夹,临时文件夹会定时进行清理,正式文件夹是用户确认使用的图片存储的位置。

1. fileReader

现在html5提供的API不再让图片预览那么麻烦,FileReader提供了很多的方法来进行图片预览和文本读取,同时也提供了一整套完整的事件来捕获文件的状态,如下:

FileReader接口的方法 FileReader接口有4个方法,其中3个用来读取文件,另一个用来中断读取。无论读取成功或失败,方法并不会返回读取结果,这一结果存储在result属性中。

方法名 参数 描述
readAsBinaryString file 将文件读取为二进制编码
readAsText file[, encoding] 按照格式将文件读取为文本,encode默认为UTF-8
readAsDataURL file 将文件读取为DataUrl
abort (none) 终端读取操作

FileReader接口事件 FileReader接口包含了一套完整的事件模型,用于捕获读取文件时的状态。

事件 描述
  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是基于Vue3和原生Canvas实现抖音头像抠图和预览的代码示例: 1. 在Vue3中引入Canvas 在Vue3中,我们可以通过在template中添加canvas元素来引入Canvas,然后通过ref属性获取Canvas的实例。代码如下: ```html <template> <canvas ref="canvas"></canvas> </template> ``` 2. 实现头像抠图功能 首先,我们需要获取用户上传的头像图片,并创建一个新的Canvas元素来处理图片。代码如下: ```javascript import { ref } from 'vue' export default { setup() { // 获取Canvas实例 const canvasRef = ref(null) // 处理上传的图片 const handleImageUpload = (event) => { const file = event.target.files[0] if (file) { const reader = new FileReader() reader.readAsDataURL(file) reader.onload = () => { const img = new Image() img.src = reader.result // 创建新的Canvas元素 const canvas = canvasRef.value const ctx = canvas.getContext('2d') img.onload = () => { const width = img.width const height = img.height canvas.width = width canvas.height = height // 将图片绘制到Canvas中 ctx.drawImage(img, 0, 0, width, height) // 实现头像抠图功能 // ... } } } } return { canvasRef, handleImageUpload } } } ``` 接下来,我们需要实现头像抠图的功能。首先,我们需要使用Canvas的getImageData方法获取Canvas中的像素数据。代码如下: ```javascript // 获取Canvas中的像素数据 const imageData = ctx.getImageData(0, 0, width, height) const pixels = imageData.data ``` 然后,我们可以遍历像素数据,判断每个像素的透明度是否大于某个阈值,如果大于阈值则将该像素的透明度设为255,否则将透明度设为0。这样,就可以把头像部分的像素点都变成不透明的,从而实现头像抠图的效果。代码如下: ```javascript // 实现头像抠图功能 const threshold = 200 // 阈值 for (let i = 0; i < pixels.length; i += 4) { const alpha = pixels[i + 3] if (alpha > threshold) { pixels[i + 3] = 255 } else { pixels[i + 3] = 0 } } ctx.putImageData(imageData, 0, 0) ``` 3. 实现头像预览功能 最后,我们需要实现头像预览的功能。首先,我们需要在template中添加一个img元素,用于展示处理后的头像。代码如下: ```html <template> <div> <input type="file" accept="image/*" @change="handleImageUpload"> <canvas ref="canvas"></canvas> <img ref="preview"> </div> </template> ``` 然后,我们需要在handleImageUpload方法中,将处理后的Canvas转换成DataURL,然后将其赋值给img元素的src属性,从而实现头像预览的效果。代码如下: ```javascript // 将Canvas转换成DataURL const dataURL = canvas.toDataURL() // 将处理后的头像展示在img元素中 const imgPreview = previewRef.value imgPreview.src = dataURL ``` 至此,基于Vue3和原生Canvas实现抖音头像抠图和预览的代码示例就完成了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值