uniapp保存base64位图片

uniapp保存base64位图片

后端返回数据:

返回数据

 

以前都是返回一个网络连接,第一次看到这样懵逼了,问了一下后端,是直接返回二进制流的。

遇到问题,当然打印一些(好家伙,我还以为乱码了!) 打印数据

处理方法

1.修改返回数据类型(修改封装的接口的uni.request)

//设置响应的数据类型
responseType: 'arraybuffer'

2.转成base64位图片

3.用Bitmap生成临时图片

4.用uni.saveImageToPhotoAlbum保存图片

// res.data 假设位上方的乱码 (完成步骤1后不是乱码了 是arraybuffer类型)
let base64String = uni.arrayBufferToBase64(res.data)//将 ArrayBuffer 对象转成 Base64 字符串
let base64 = "data:image/png;base64," + base64String
const bitmap = new plus.nativeObj.Bitmap("test");
bitmap.loadBase64Data(base64, function() {
    const url = "_doc/" + new Date().getTime() + ".png";  // url为时间戳命名方式
    bitmap.save(url, {
        overwrite: true,  // 是否覆盖
        // quality: 'quality'  // 图片清晰度
    }, (i) => {
        uni.saveImageToPhotosAlbum({	//保存图片
            filePath: url,
            success: res => {
                console.log("成功",res)
                bitmap.clear()
            }
        });
    }, (err) => {
        console.log("失败",err)
        bitmap.clear()
    });
}, (err) => {
    console.log("失败",err)
    bitmap.clear()
});	

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章