小程序调用百度api实现图像识别

一、获取app_key和secret_key

1.1首先需要去百度智能云搜索图像识别

小程序调用百度api实现图像识别

 1.2创建应用--领取免费资源(我已经创建了应用,这个是可以免费使用一年的,测试够了)

小程序调用百度api实现图像识别

 1.3获取app_key和secret_key  

  点进上一张图的管理应用即可查看相应信息

二、获取token

2.1首先判断storage中是否已经有token 

onLoad() {
    //   自定义头部导航栏文字
    wx.setNavigationBarTitle({
        title: '垃圾搜索'
     });
     //获取storge中的token
     var that=this;
     wx.getStorage({
       key:'expires_in',
       success(res){
         // 获取成功,证明本地已存有相关token
         const newT =Date.parse(new Date())/1000/1000;
        //  // 用当前时间和存储的时间判断,token是否已过期
         if (newT > parseInt(res.data)) {
             // token过期,重新获取token
             that.getToken();
         } else {
             // 获取本地缓存的token
             let token=wx.getStorageSync('access_token');
             that.setData({token:token});
         }
       },fail(){
         that.getToken();
       }
     })
  },

2.2 getToken函数

// 获取token
  getToken:function(){
    var that=this;
    // client_id:app_key需要自己去百度智能云创建相应的应用后获取
    //client_secret:Secret Key
    const url = 'https://aip.baidubce.com/oauth/2.0/token'+
          '?grant_type=client_credentials'+
         '&client_id=YDVwACVuT2Zb2UgmIMpxoGg5&client_secret=64HL4G33rd9H0SjseOe6M8aj5jm9kLNP';
    wx.request({
        url:url,
        method: 'POST',
        success: res => {
            console.log(res)
            let thaRres=res.data;
            // 将access_token存储到storage中
            wx.setStorage({
              key:'access_token',
              data:thaRres.access_token
            });
            wx.setStorage({
              key:'expires_in',
              data:thaRres.expires_in
            });
            that.setData({token:thaRres.access_token});
                /*
                access_token: 要获取的Access Token;
                expires_in: Access Token的有效期(秒为单位,一般为1个月);
                */
            },
            fail: () => {}
    });
  },

三、进行图像识别

//   点击相机图标时
  cameraTap:function(){
      console.log('点击相机');
      var that=this;
      wx.chooseImage({
        success: res => {
          wx.getFileSystemManager().readFile({
            filePath: res.tempFilePaths[0], //选择图片返回的相对路径
            encoding: 'base64', //编码格式
            success: res => { //成功的回调
            // 图片
            wx.showLoading({
              title: '识别中...',
            })
              var image = res.data;
              // 文字识别
              wx.request({
                url: 'https://aip.baidubce.com/rest/2.0/image-classify/v2/advanced_general?access_token='+that.data.token,
                data: {
                image: image
                },
                header: {
                'Content-Type': 'application/x-www-form-urlencoded'
                },
                method: 'POST',
                success(res) {
                console.log(res.data)
                wx.hideLoading({
                  success: (res) => {},
                })
                },
                fail:()=>{
                  wx.hideLoading();
                  wx.showToast({
                      title: '图片识别失败,请重试!',
                      icon: 'none'
                  });
                }
              })
            }
          })
        }
      })
  },

至此大功告成,返回的数据如下:

小程序调用百度api实现图像识别

 result就是最终需要的数据了!

上一篇:【微信小程序】上传头像


下一篇:wx.showDodal()去除取消按钮