在开发小程序中,保存图片还是比较常见的,比如海报、推广码的下载等。
1、使用微信预览图片进行保存
小程序和公众号不一样,长按图片是没反应的。我们可以给图片绑定一个点击事件调用微信的自带的 wx.previewImage 方法。把图片进行弹出。
2、使用微信wx.saveImageToPhotosAlbum(OBJECT)方法。
PS:这个方法是不支持网络图片的,如果是从服务器传过来的图片,我们需要先把图片下载或者临时储存到本地。
现在我们可以使用微信的查看图片信息方法 wx.getImageInfo 。可以默认把网络图片生成一个临时图片。ps:使用前先去微信后台配置图片下载域名,否则无法使用。
然后就大功告成了!!!
实现代码
// 保存图片
save_pic() {
var _this = this
var image = _this.data.image
wx.getImageInfo({
src: image,
success: function (sres) {
var imgSrc = sres.path;
wx.showLoading({
title: '保存中',
mask: true
})
setTimeout(function () {
wx.saveImageToPhotosAlbum({
filePath: imgSrc,
success: function (data) {
// wx.showToast({
// title: '保存成功',
// icon: 'success',
// duration: 2000
// })
console.log(data)
wx.showModal({
title: '友情提示',
content: '图片保存成功,请到相册查找分享',
success(res) {
if (res.confirm) {
wx.switchTab({
url: '/pages/user_index/user_index',
})
} else if (res.cancel) {
wx.switchTab({
url: '/pages/user_index/user_index',
})
}
}
})
},
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.hideLoading();
}, 2000)
}
})
}