微信小程序分享图片给微信好友(如二维码)


目录

前言

一、使用哪种api?

二、对图片的处理需要转化为临时路径

三、Windows端兼容性问题

前言

最近在公司开发一个微信小程序项目,用到的uniapp技术,在分享图片时,查看了uniapp的技术文档,写的还是很粗糙的,说得不太清楚,在我看了一个下午得出了一个结论,uniapp并没有封装可以转发图片到微信好友中的api。


提示:以下是本篇文章正文内容,下面案例可供参考

一、使用哪种api?

1. 分享图片功能, 使用的是 wx.showShareImageMenu() 而不是uniapp的uni.share() 。

wx.showShareImageMenu({  //分享给朋友
                     path: qrimg.value,
                     success: (res) => {
                         console.log("分享成功:", res);
                     },
                     fail: (err) => {
                         console.log("分享取消:", err);
                     },
                 })

二、对图片的处理需要转化为临时路径

2. 分享的图片,如果是后端直接返回路径,需将路径转换为临时路径传入; 如果是前端生成图片,直接通过 wx.createCanvasContext() 画一个, 然后通过 canvasToTempFilePath 转成图片临时路径。

uni.canvasToTempFilePath({
                   destWidth: 100,
                   destHeight: 100,
                   canvasId: 'qrcode',
                   success: function(res) {
                         // 在H5平台下,tempFilePath 为 base64
                         // qrimg.value=res.tempFilePath
                         resolve(res.tempFilePath)
                   },
                   fail: function(error) {
                         wx.showToast({
                                 title: "保存图片失败",
                                 duration: 2000
                         })
                         if (error.errMsg === "saveImageToPhotosAlbum:fail:auth denied" || 
                             error.errMsg === "saveImageToPhotosAlbum:fail auth deny" || 
                             error.errMsg === "saveImageToPhotosAlbum:fail authorize no response"
                         ) {
                             // 这边微信做过调整,必须要在按钮中触发,因此需要在弹框回调中进行调用
                             wx.showModal({
                                 title: '提示',
                                 content: '需要您授权保存相册',
                                 showCancel: false,
                                 success: modalSuccess => {
                                     wx.openSetting({
                                         success(settingdata) {
                                             console.log("settingdata", settingdata)
                                             if (settingdata.authSetting['scope.writePhotosAlbum']) {
                                                 wx.showModal({
                                                     title: '提示',
                                                     content: '获取权限成功',
                                                     showCancel: false,
                                                 })
                                             } else {
                                                 wx.showModal({
                                                     title: '提示',
                                                     content: '获取权限失败,将无法保存到相册哦~',
                                                     showCancel: false,
                                                 })
                                             }
                                         },
                                     })
                                 }
                             })
                             reject(error)
                         }
                         reject(error)
                   }
                 })

三、Windows端兼容性问题

3. 用Windows电脑端微信,打开当前小程序,会发现,调用 wx.showShareImageMenu() 无反应( success、fail 方法都没执行),经咨询,showShareImageMenu方法不支持在Windows上使用, 因此需要提前判断是否是Windows系统(通过判断 getSystemInfoSync().platform 是否等于 windows ),如果是Windows系统,要么隐藏入口,要么toast给提示,来避开此问题


猜你喜欢

转载自blog.csdn.net/weixin_54079103/article/details/129149328