van-uploader组件选择heic格式图片后转码成jpg图片报错

目前大部分安卓手机相机设置中有这么一项(HEIF格式),打开后拍出来的照片就是heic/heif格式,比jpg和png更加节省储存空间,但是这种格式的照片上传到文件服务器后,部分手机浏览器无法显示,电脑浏览器则正常,所以需要前端上传前做转码处理。

于是到网上找了个第三方js库heic2any(https://github.com/alexcorvi/heic2any)来做转格式的工作,调试了半天,出现以下报错:

以下是方法代码

import heic2any from "heic2any";

/**
 * @description: heic格式图片base64转blob,再转png格式
 * @author: Tan
 * @return {*}
 * @param {*} fileName
 * @param {*} base64
 */
const heic2jpt = (fileName, base64) => {
    return new Promise((resolve, reject) => {
        let data = atob(base64.split(',')[1]);
        let n = data.length;
        let u8arr = new Uint8Array(n);
        while (n--) {
            u8arr[n] = data.charCodeAt(n);
        }
        let blob = new Blob([u8arr]);
        console.log('blob',data.length,blob)
        heic2any({
            blob,
            toType: "image/png"
        }).then((conversionResult) => { // conversionResult is a BLOB
            resolve(blobToFile(conversionResult, fileName))
        })
        .catch((e) => {
            console.error('error',e)
        });
    })
}

对比了文档例子只有是从网上下载的二进制流来转jpg,这里直接用van-uploader本地获取的图片文件的二进制流放进去转格式则会报错,我查了一下是LIBHEIF是解码器不支持当前格式 

 所以目前还没找到解决方案,最后得出的结论是上传文件后让后端进行转码罒ω罒。

欢迎有遇到过这个问题,或者知道怎么解决的大神留言。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值