小程序之保存圖片到相冊的幾種方法
2020-09-27|HiShop
導(dǎo)讀:保存圖片到本地有兩種方法,其一是網(wǎng)絡(luò)圖片保存到相冊,其二本地圖片保存到相冊。...
小程序保存圖片到本地總的來說有兩種方法,其一是網(wǎng)絡(luò)圖片保存到相冊,其二本地圖片保存到相冊。
官方文檔
保存圖片前需要授權(quán),因此我們先授權(quán),代碼如下:
- //獲取相冊授權(quán)
- wx.getSetting({
- success(res) {
- if (!res.authSetting['scope.writePhotosAlbum']) {
- wx.authorize({
- scope:'scope.writePhotosAlbum',
- success() {
- console.log('授權(quán)成功')
- }
- })
- }
- }
- })
- //此方法可以寫在app.js中,也可以寫在調(diào)用保存按鈕時(shí)。
獲取授權(quán)
第一種方法,網(wǎng)絡(luò)圖片保存:
- 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("當(dāng)初用戶拒絕,再次發(fā)起授權(quán)")
- wx.openSetting({
- success(settingdata) {
- console.log(settingdata)
- if (settingdata.authSetting['scope.writePhotosAlbum']) {
- console.log('獲取權(quán)限成功,給出再次點(diǎn)擊圖片保存到相冊的提示。')
- } else {
- console.log('獲取權(quán)限失敗,給出不給權(quán)限就無法正常使用的提示')
- }
- }
- })
- }
- },
- complete(res){
- console.log(res);
- }
- })
- }
- })
第二種方法:選擇相冊圖片存入本地
- wx.chooseImage({
- count:1,// 默認(rèn)9
- sizeType: ['original','compressed'],// 可以指定是原圖還是壓縮圖,默認(rèn)二者都有
- sourceType: ['album','camera'],// 可以指定來源是相冊還是相機(jī),默認(rèn)二者都有
- success:function (res) {
- // 返回選定照片的本地文件路徑列表,tempFilePath可以作為img標(biāo)簽的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('獲取權(quán)限成功,給出再次點(diǎn)擊圖片保存到相冊的提示。')
- }else {
- console.log('獲取權(quán)限失敗,給出不給權(quán)限就無法正常使用的提示')
- }
- }
- })
- }
- }
- })
- }
- })
- }
- })