美文网首页
小程序实现保存图片到相册

小程序实现保存图片到相册

作者: 胡小喵_ | 来源:发表于2020-12-18 15:01 被阅读0次

在开发过程中经常遇到保存图片到相册的需求,主要有两种一是保存服务器地址图片,还有一种是保存canvas生成的base64格式图片,下面来讲解分别怎么实现。

保存服务器地址图片到相册

// 查看是否有 `scope.writePhotosAlbum` 权限
wx.getSetting({
    success: res => {
        if (!res.authSetting['scope.writePhotosAlbum']) {

            // 申请所需权限
            wx.authorize({
                scope: 'scope.writePhotosAlbum',
                success: () => {
                    // 授权成功保存图片
                    saveToAlbum();
                },
                fail: () => {
                    // 授权失败
                }
            });
        } else {
            // 用户到设置中同意保存相册权限后再次保存到相册
            saveToAlbum();
        }
    }
});

// 保存图片到相册
function saveToAlbum() {
    // 下载图片资源到本地
    wx.downloadFile({
        url: imgUrl,
        success: function (res) {
            // 保存图片到相册
            wx.saveImageToPhotosAlbum({
                filePath: res.tempFilePath,
                success(res) {
                    // 保存成功
                },
                fail: () => {
                    // 保存失败
                }
            });
        },
        fail: () => {
            // 下载失败
        }
    });
}

保存base64格式图片到相册

// 查看是否有 `scope.writePhotosAlbum` 权限
wx.getSetting({
    success: res => {
        if (!res.authSetting['scope.writePhotosAlbum']) {

            // 申请所需权限
            wx.authorize({
                scope: 'scope.writePhotosAlbum',
                success: () => {
                    // 授权成功保存图片
                    saveToAlbum();
                },
                fail: () => {
                    // 授权失败
                }
            });
        } else {
            // 用户到设置中同意保存相册权限后再次保存到相册
            saveToAlbum();
        }
    }
});

// 保存图片到相册
function saveToAlbum() {
    // 把base64的图片转化成ArrayBuffer数据
    const buffer = wx.base64ToArrayBuffer(img.replace(/^data:\w+\/\w+;base64,/, ''));
    // 指定图片的临时路径
    const path = `${wx.env.USER_DATA_PATH}/image_name.png`;
    // 获取小程序的文件系统
    const fsm = wx.getFileSystemManager();
    // 把arraybuffer数据写入到临时目录中
    fsm.writeFile({
        filePath: path,
        data: params,
        encoding: 'binary',
        success: () => {
            // 把临时路径下的图片,保存至相册
            wx.saveImageToPhotosAlbum({
                filePath: path,
                success: () => {
                    // 保存成功
                },
                fail: () => {
                    // 保存失败
                }
            });
        },
        fail: () => {
            // 写入失败
        }
    });
}

相关文章

网友评论

      本文标题:小程序实现保存图片到相册

      本文链接:https://www.haomeiwen.com/subject/wtaxnktx.html