uniapp 实现base64格式图片保存到相册

开发过程中的一个需求:后端返回的一个base64格式的图片显示在页面上,需要点击保存该图片到系统相册。

 

uni-app将图片存入系统的官方api是 uni.saveImageToPhotosAlbum(OBJECT),需要给定一个文件路径filePath,但是这个路径我们是没办法拿到的。

解决思路:需要用到Bitmap,把base64转成bitmap文件对象,保存到系统相册(但是此时某些手机上无法显示出来,其实是保存成功的),然后使用uni.saveImageToPhotoAlbum方法将图片成功保存并显示。

 

1、Bitmap是原生图片对象,其有个方法是loadBase64Data;于是我们首先创建一个bitmap对象:

2、然后使用loadBase64Data将base64字符串转换为bitmap文件对象:

3、调用bimap.save方法,将图片文件存入手机存储(记得bitmap.clear(),比较占内存)

4、uni.saveImageToPhotoAlbum方法将图片成功保存并显示

整体代码如下:

saveHeadImgFile() {
    let base64 = this.qrImgUrl;
    const bitmap = new plus.nativeObj.Bitmap("test");
    bitmap.loadBase64Data(base64, function() {
        const url = "_doc/" + new Date().getTime() + ".png";  // url为时间戳命名方式
        console.log(saveHeadImgFile, url)
        bitmap.save(url, {
            overwrite: true,  // 是否覆盖
            // quality: ‘quality‘  // 图片清晰度
        }, (i) => {
            uni.saveImageToPhotosAlbum({
                filePath: url,
                success: function() {
                    uni.showToast({
                        title: 图片保存成功,
                        icon: none
                    })
                    bitmap.clear()
                }
            });
        }, (e) => {
            uni.showToast({
                title: 图片保存失败,
                icon: none
            })
            bitmap.clear()
        });
    }, (e) => {
        uni.showToast({
            title: 图片保存失败,
            icon: none
        })
        bitmap.clear()
    });
}

 

uniapp 实现base64格式图片保存到相册

上一篇:1.Python_爬虫基础


下一篇:关于axios异步请求的测试