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()
});	

 

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