一、获取app_key和secret_key
1.1首先需要去百度智能云搜索图像识别
1.2创建应用--领取免费资源(我已经创建了应用,这个是可以免费使用一年的,测试够了)
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'
});
}
})
}
})
}
})
},
至此大功告成,返回的数据如下:
result就是最终需要的数据了!