图片转换1

/**
 * Base64 转 File
 * @param base64 String base64格式字符串
 * @param filename String 文件名称或者文件路径
 * @param contentType String file对象的文件类型,如:"image/png"
 */
 export function base64ToFile(base64, filename, contentType){
     var arr = base64.split(',')  //去掉base64格式图片的头部
     var bstr = atob(arr[1])   //atob()方法将数据解码
     var leng = bstr.length
     var u8arr = new Uint8Array(leng)
     while(leng--){
        u8arr[leng] =  bstr.charCodeAt(leng) //返回指定位置的字符的 Unicode 编码
     }
     return new File([u8arr], filename, {type:contentType}) 
 }

/**
* Base64转Blob
* @param base64 String base64格式字符串
* @param contentType String blob对象的文件类型,如:"image/png"
*/
function base64ToBlob(base64, contentType){
    var arr = base64.split(',')  //去掉base64格式图片的头部
    var bstr = atob(arr[1])   //atob()方法将数据解码
    var leng = bstr.length
    var u8arr = new Uint8Array(leng)
    while(leng--){
        u8arr[leng] =  bstr.charCodeAt(leng) //返回指定位置的字符的 Unicode 编码
    }
    var blob = new Blob([u8arr],{type:contentType})
    var blobImg = {}
    blobImg.url = URL.createObjectURL(blob )  //创建URL,
    blobImg.name = new Date().getTime() + '.png'
    return blobImg
}

/**
 * File 转 Base64
 * @param file Object 文件对象流
 */
 export function fileToBase64(file){
    return new Promise((resolve) => {
        var reader = new FileReader()
        reader.readAsDataURL(file)  
        //读取后,result属性中将包含一个data:URL格式的Base64字符串用来表示所读取的文件
        reader.onload = function(e){
            resolve(e.target.result)
        }
     })
 }

/**
* Blob 转 Base64
* @param blob Object blob对象
*/
export function blobToBase64(blob){
    return new Promise((resolve) => {
        var reader = new FileReader()
        reader.readAsDataURL(blob)  
        //读取后,result属性中将包含一个data:URL格式的Base64字符串用来表示所读取的文件
        reader.onload = function(e){
            resolve(e.target.result)
        }
     })
}

转载

JS 图片base64与file/blob的相互转换_js base64 转文件-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值