图片、视频blob(url)转base64

本文介绍如何将图片和视频文件转换为Base64编码,包括图片的压缩处理和视频文件的读取方法。通过JavaScript实现,适用于前端开发中需要将多媒体文件转化为Base64字符串的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图片转base64

blobToBase64 (path, quality) {
      // 此处为压缩图片方法
      const image = new Image() // 新建一个img标签(还没嵌入DOM节点)
      image.src = path
      image.onload = () => {
        const canvas = document.createElement('canvas')
        const context = canvas.getContext('2d')
        const x = image.width / quality // 压缩倍数
        const imageWidth = image.width / x // 压缩后图片的大小
        const imageHeight = image.height / x
        canvas.width = imageWidth
        canvas.height = imageHeight
        context.drawImage(image, 0, 0, imageWidth, imageHeight)
        let imgUrl = canvas.toDataURL('image/jpeg') //图片的base64地址
     }
  }

 

 视频转base64

fetch(blobUrL).then(data=>{
    const blob = data.blob()
    return blob;
}).then(blob=>{
    let reader = new window.FileReader()    
    reader.onloadend = function() {
        const data = reader.result
        console.log('视频base64地址:',data)
    }
    reader.readAsDataURL(blob)
})

错误代码:

base(blobUrl){
    const blob = blobUrl.blob()
    let reader = new FileReader();
    reader.readAsDataURL(blob);
    reader.onloadend = function() {
        data = reader.result;
        console.log(data);
    }
}

clipboard.png

原因:blob是个字符串,直接运行以下代码会报跨域

### 如何将 Blob URL 换为 Base64 字符串 为了实现从 Blob URLBase64 字符串的换,首先需要通过 `fetch` API 获取 Blob 对象,接着创建一个 FileReader 实例来读取该 Blob 并将其编码为 Base64 格式[^1]。 ```javascript async function blobUrlToBase64(url) { const response = await fetch(url); const blob = await response.blob(); return new Promise((resolve, reject) => { const reader = new FileReader(); reader.onloadend = () => resolve(reader.result.split(',')[1]); reader.onerror = reject; reader.readAsDataURL(blob); }); } ``` 此函数接收一个 Blob URL 参数,并返回解码后的纯 Base64 编码字符串(不带前缀)。这使得后续处理更加简便,特别是当目标是仅传输实际的数据部分而不包括 MIME 类型信息时[^2]。 一旦获得了 Base64 数据,就可以利用任何 HTTP 客户端库(如 Axios 或 Fetch API)向服务器提交数据。下面是一个简单的例子展示如何使用原生 JavaScript 发送 POST 请求: ```javascript const url = 'your_blob_url_here'; blobUrlToBase64(url).then(base64String => { fetch('/api/upload', { method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify({imageData: base64String}) }).then(response => console.log('Success:', response)) .catch(error => console.error('Error:', error)); }); ``` 上述代码片段展示了完整的流程:先获取 Base64 字符串表示形式,随后构建请求体并将之发送至指定的服务端接口 `/api/upload` 进行持久化保存。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值