美文网首页微信小程序微信开发运营微信小程序开发
小程序之保存图片到相册的几种方法

小程序之保存图片到相册的几种方法

作者: honey缘木鱼 | 来源:发表于2018-06-22 14:41 被阅读16次

    保存图片到本地有两种方法,其一是网络图片保存到相册,其二本地图片保存到相册。


    官方文档

    保存图片前需要授权,因此我们先授权,代码如下:

    //获取相册授权
    wx.getSetting({
    success(res) {
    if (!res.authSetting['scope.writePhotosAlbum']) {
    wx.authorize({
    scope:'scope.writePhotosAlbum',
    success() {
    console.log('授权成功')
    }
    })
    }
    }
    })
    //此方法可以写在app.js中,也可以写在调用保存按钮时。
    
    获取授权

    第一种方法,网络图片保存:

    var imgSrc = "http://yijiao.oss-cn-qingdao.aliyuncs.com/images/http://tmp/wx1b4e5e756cd48af1.o6zAJsws4grEQvYrWTjBigy-6QaU.0llhudiKSF2V955a1c48350d9328ef064b4d36d12746.jpg"
        wx.downloadFile({
          url: imgSrc,
          success: function (res) {
            console.log(res);
            //图片保存到本地
            wx.saveImageToPhotosAlbum({
              filePath: res.tempFilePath,
              success: function (data) {
                wx.showToast({
                  title: '保存成功',
                  icon: 'success',
                  duration: 2000
                })
              },
              fail: function (err) {
                console.log(err);
                if (err.errMsg === "saveImageToPhotosAlbum:fail auth deny") {
                  console.log("当初用户拒绝,再次发起授权")
                  wx.openSetting({
                    success(settingdata) {
                      console.log(settingdata)
                      if (settingdata.authSetting['scope.writePhotosAlbum']) {
                        console.log('获取权限成功,给出再次点击图片保存到相册的提示。')
                      } else {
                        console.log('获取权限失败,给出不给权限就无法正常使用的提示')
                      }
                    }
                  })
                }
              },
              complete(res){
                console.log(res);
              }
            })
          }
        })
    

    第二种方法:选择相册图片存入本地

    wx.chooseImage({
    count:1,// 默认9
    sizeType: ['original','compressed'],// 可以指定是原图还是压缩图,默认二者都有
    sourceType: ['album','camera'],// 可以指定来源是相册还是相机,默认二者都有
    success:function (res) {
    // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
    console.log("choose image")
    console.log(res)
    var tempFilePath = res.tempFilePaths[0]
    wx.getImageInfo({
    src: tempFilePath,
    success:function (res) {
    console.log("get image info")
    console.log(res)
    wx.saveImageToPhotosAlbum({
    filePath: res.path,
    success(res) {
    console.log("保存图片成功")
    console.log(res)
    wx.showToast({
    title:'保存成功',
    icon:'success',
    duration:2000
    })
    },
    fail(err) {
    console.log('失败')
    console.log(err)
    
    if (err.errMsg == "saveImageToPhotosAlbum:fail cancel"){
    wx.openSetting({
    success(settingdata) {
    console.log(settingdata)
    if (settingdata.authSetting["scope.writePhotosAlbum"]) {
    console.log('获取权限成功,给出再次点击图片保存到相册的提示。')
    }else {
    console.log('获取权限失败,给出不给权限就无法正常使用的提示')
    }
    }
    })
    }
    }
    })
    }
    })
    }
    })
    

    如有疑问,请简信。

    相关文章

      网友评论

      • 香烟瓜子饮料矿泉水:能帮忙把某个小程序里的UI等图片下载到本地来吗?付费。联系QQ4175455
        honey缘木鱼:@香烟瓜子饮料矿泉水 没有源码吗?如果没有源码你需要图片可以到阿里云图库,里面有大量图片
      • 杰米桀弥:‘saveImageToPhotosAlbum:fail:auth denied ’,最后一个单词写错了

      本文标题:小程序之保存图片到相册的几种方法

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