js中base64、url和blob之间相互转换的3种方式(详细代码)

 更新时间:2023年10月10日 08:31:13   作者:世界太过浮夸  
这篇文章主要给大家介绍了关于js中base64、url和blob之间相互转换的3种方式,Blob和File是用来表示二进制数据的,而Base64则是一种编码方式,用来把二进制数据编码成可读的字符串,需要的朋友可以参考下

url转换为base64

 function urlToBase64(url) {
        return new Promise((resolve, reject) => {
            let image = new Image();
            image.onload = function () {
                let canvas = document.createElement('canvas');
                canvas.width = this.naturalWidth;
                canvas.height = this.naturalHeight;
                // 将图片插入画布并开始绘制
                canvas.getContext('2d').drawImage(image, 0, 0);
                // result
                let result = canvas.toDataURL('image/png')
                resolve(result);
            };
            // CORS 策略,会存在跨域问题https://stackoverflow.com/questions/20424279/canvas-todataurl-securityerror
            image.setAttribute("crossOrigin", 'Anonymous');
            image.src = url;
            // 图片加载失败的错误处理
            image.onerror = () => {
                reject(new Error('urlToBase64 error'));
            };
        })
    }

调用:

 urlToBase64(url).then(res=> {
      // 转化后的base64图片地址
 	  console.log('base64', res)
});

blob 转 url

function blobToBase64(blob) {
  return new Promise((resolve, reject) => {
    const fileReader = new FileReader();
    fileReader.onload = (e) => {
      resolve(e.target.result);
    };
    // readAsDataURL
    fileReader.readAsDataURL(blob);
    fileReader.onerror = () => {
      reject(new Error('blobToBase64 error'));
    };
  });
}

调用:

blobToBase64(blob).then(res => {
  // 转化后的base64
  console.log('base64', res)
})

base64 转 Blob

function function base64toBlob(dataurl) {
    var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
        bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
    while (n--) {
        u8arr[n] = bstr.charCodeAt(n);
    }
    return new Blob([u8arr], { type: mime });
}

blob转 File

 function blobToFile(blob, name) {
        return new File([blob], name + '.png', { type: blob.type });
    }

总结 

到此这篇关于js中base64、url和blob之间相互转换的3种方式的文章就介绍到这了,更多相关js base64、url和blob相互转换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • json格式数据的添加,删除及排序方法

    json格式数据的添加,删除及排序方法

    这篇文章主要介绍了json格式数据的添加,删除及排序方法,结合实例形式分析了针对一维数组与二维数组的json格式数据进行增加、删除与排序的实现技巧,需要的朋友可以参考下
    2016-01-01
  • JS代码实现table数据分页效果

    JS代码实现table数据分页效果

    这篇文章主要介绍了JS代码实现table数据分页效果的相关资料,非常不错,代码简答易懂,非常实用,需要的朋友可以参考下
    2016-05-05
  • JS实现简单的天数计算器完整实例

    JS实现简单的天数计算器完整实例

    这篇文章主要介绍了JS实现简单的天数计算器,结合完整实例形式分析了javascript针对日期的获取及天数运算相关操作技巧,需要的朋友可以参考下
    2017-04-04
  • html页面显示年月日时分秒和星期几的两种方式

    html页面显示年月日时分秒和星期几的两种方式

    在html页面中显示时间是很常见的,实现的方法有很多,下面为大家简单介绍两种方式,有需求的朋友可以参考下,希望对大家有所帮助
    2013-08-08
  • 原生js实现手风琴功能(支持横纵向调用)

    原生js实现手风琴功能(支持横纵向调用)

    本文主要介绍了原生js实现手风琴功能(支持横纵向调用)的示例代码。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • js中onload与onunload的使用示例

    js中onload与onunload的使用示例

    onload与onunload想必大家并不陌生吧,下面为大家演示下js中onload与onunload的妙用,感兴趣的朋友可以参考下,希望对大家有所帮助
    2013-08-08
  • JavaScript实现一个简单的圣诞游戏

    JavaScript实现一个简单的圣诞游戏

    圣诞节即将来临,大家都在发圣诞树,小编今天就为大家介绍一个基于JavaScript实现的圣诞小游戏,文中的示例代码简单易懂,感兴趣的可以学习一下
    2021-12-12
  • Web3.js查询以太币和代币余额及转账

    Web3.js查询以太币和代币余额及转账

    这篇文章主要介绍了Web3.js查询以太币和代币余额以及转账,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • JavaScript中net::ERR_CONNECTION_REFUSED解决方法大全

    JavaScript中net::ERR_CONNECTION_REFUSED解决方法大全

    在一次测试中遇到了报net::ERR_CONNECTION_REFUSED的错误,五哦一下面这篇文章主要给大家介绍了关于JavaScript中net::ERR_CONNECTION_REFUSED解决方法的相关资料,需要的朋友可以参考下
    2022-10-10
  • js截取video视频某一帧做封面的简单案例(附完整代码)

    js截取video视频某一帧做封面的简单案例(附完整代码)

    最近碰到一个需求,要求获取video视频某一帧做封面图片,这里给大家总结下,这篇文章主要给大家介绍了关于js截取video视频某一帧做封面的简单案例,需要的朋友可以参考下
    2024-04-04

最新评论