vue-h5项目调用微信的相机相册功能

vue-h5项目调用微信的相机相册功能

微信的官网网址为:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html
微信公众号使用js-sdk的接口链接

以下是我本次调用微信相机获取本地图片的一个项目经验
1,在html文件中引入微信的接口

<script src="http://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>

2,在utils.js中判断是否是微信客户端接口

//是否是微信客户端 //isWxClient 会返回一个true 和flase  是微信浏览器打开返回true  不是返回false
   isWxClient(){
     return navigator.userAgent.toLowerCase().indexOf("micromessenger") !== -1
   },

3,获取微信的签名信息等

let param = {url:url}
          this.$http.getWxQianInfo(param).then(res =>{
            if(res.data.code === 0){
              wx.config({
                debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
                appId: res.data.data.appid, // 必填,公众号的唯一标识
                timestamp: res.data.data.timestamp, // 必填,生成签名的时间戳
                nonceStr: res.data.data.nonceStr, // 必填,生成签名的随机串
                signature: res.data.data.signature, // 必填,签名,见附录1
                jsApiList:['chooseImage','uploadImage','getLocalImgData']
              })
            }

          })

4,调用wx.chooseImage

var self = this;
wx.ready(function () {
                wx.chooseImage({
                  count: 1, // 默认9
                  sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
                  sourceType:['camera'], //是相机
                  success: function (res) {
                  // console.log("res===chengong=",res)
                  let localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
                    if(localIds.length>0){
                      self.wxUploadPic(localIds);
                    }
                  }
                });
              });
              wx.error(function (res) {
                console.log("shibai",res)
              });

5,以base64将图片上传到本地服务器中的方法,getLocalImgData能够转换成base64

wxUploadPic(localIds){
        var self = this
        wx.getLocalImgData({
          localId: localIds[0].toString(),
          success: function (resp) {
            const localData = resp.localData;
            let imageBase64 = '';
            if (localData.indexOf('data:image') == 0) {
              //苹果的直接赋值,默认生成'data:image/jpeg;base64,'的头部拼接
              imageBase64 = localData;
            } else {
              //此处是安卓中的唯一得坑!在拼接前需要对localData进行换行符的全局替换
              //此时一个正常的base64图片路径就完美生成赋值到img的src中了
              imageBase64 = 'data:image/jpeg;base64,' + localData.replace(/\n/g, '');
            }
            //console.log("base64===",imageBase64)
           // alert(imageBase64)
            if (imageBase64) {
              let param = {
                base64data: imageBase64,
              }
              console.log('param',param)
              if(self.showImgSize(imageBase64) > 2) {
                Toast('请使用小于2MB的图片')
                return
              } else {
                self.resumeMsg.photo = param.base64Data
               // console.log("上传图片")
                //alert("上传图片")
                self.$http.uploadHeadPhoto(param, ([code, res]) => {
                  // self.$http.uploadHeadPhoto({base64Data: param.base64Data}, ([code, res]) => {
                 // console.log(code)
                  console.log('res',res)
                 // alert("上传中")
                  if(res.code == 0){
                    self.getPersonalOne()
                  }
                  /*if(code == 200) {
                    self.getPersonalOne()
                  }*/
                })
              }
            } else {
              Toast("选择图片出了点问题,请稍后再试下吧");
            }
          }
        });
      },

以上完成了拍照的功能

其他:getLocalImgData,获取图片的base64数据

wx.getLocalImgData({
  localId: '', // 图片的localID
  success: function (res) {
    var localData = res.localData; // localData是图片的base64数据,可以用img标签显示
  }
});

拍照或从手机相册中选图接口

wx.chooseImage({
  count: 1, // 默认9
  sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
  sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
  success: function (res) {
  var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
  }
});

预览图片接
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在Vue H5调用微信分享,首先需要引入微信官方的JS-SDK库。在Vue项目的index.html文件中,可以在<head>标签内添加如下代码: ```html <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script> ``` 然后,在Vue组件的created生命周期钩子函数中,使用Vue的axios或者其他网络请求库向后端请求获取微信配置信息。 ```javascript created() { this.fetchWechatConfig(); }, methods: { async fetchWechatConfig() { const response = await axios.get('/api/wechat/config'); // 向后端请求微信配置信息 const { appId, timestamp, nonceStr, signature } = response.data; // 将配置信息存储到全局变量中 this.$store.commit('setWechatConfig', { appId, timestamp, nonceStr, signature }); this.initWechatSDK(); }, initWechatSDK() { const { appId, timestamp, nonceStr, signature } = this.$store.state.wechatConfig; wx.config({ appId, timestamp, nonceStr, signature, jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage'], // 配置需要使用的微信API }); // 进行微信SDK的初始化 wx.ready(() => { this.shareToWechat(); }); }, shareToWechat() { const shareData = { title: '分享标题', link: '分享链接', imgUrl: '分享图片链接', desc: '分享描述', }; // 配置分享的具体内容 wx.onMenuShareTimeline(shareData); // 分享到朋友圈 wx.onMenuShareAppMessage(shareData); // 分享给好友 }, }, ``` 上述代码中,我们通过axios库向后端请求了微信配置信息,并将其存储到Vuex的全局状态中。然后,我们使用微信JS-SDK中的`wx.config`方法进行微信验证和初始化配置。一旦初始化成功,`wx.ready`回调函数将会被触发,我们在该函数中调用`shareToWechat`方法来配置分享的具体内容。 在`shareData`对象中,我们可以自定义分享的标题、链接、图片和描述等信息,然后使用`wx.onMenuShareTimeline`方法配置分享给朋友圈的内容,使用`wx.onMenuShareAppMessage`方法配置分享给好友的内容。 最后,我们可以在Vue组件中调用`shareToWechat`方法来触发微信分享。 注意:在实际开发中,需要根据微信的API文档和后端提供的接口来进行相应的调整和配置。以上代码仅为示例,具体实现方式可能会有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值