小程序之保存图片到相册的几种方法
2020-09-27|HiShop
导读:保存图片到本地有两种方法,其一是网络图片保存到相册,其二本地图片保存到相册。...
小程序保存图片到本地总的来说有两种方法,其一是网络图片保存到相册,其二本地图片保存到相册。
官方文档
保存图片前需要授权,因此我们先授权,代码如下:
- //获取相册授权
- 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('获取权限失败,给出不给权限就无法正常使用的提示')
- }
- }
- })
- }
- }
- })
- }
- })
- }
- })