微信小程序使用百度AI識別接口的通用封裝Promise詳解
百度AI開放平臺
百度AI開放平臺是目前市場上主流開放接口平臺之一,新用戶還可領取免費資源(適合我這種勤儉節約的人),本篇就來介紹如何對百度AI的開放接口進行通用封裝。
百度接口調用封裝(Promise)
此封裝主要是針對需要上傳圖片識別的接口,比如翻譯,身份證識別,車牌識別等等。其他不需要上傳圖片的接口,把wx.chooseMedia那部分去掉就可以。
前提準備:
- 註冊百度AI賬號
- 領取對應資源
- 創建應用,拿到
client_id
和client_secret
(本封裝方法的access_token
是在小程序前端獲取的,如果是把access_token
放後端,通過調用後端接口獲取的,url就換成自己的後端接口即可)。
封裝代碼:
先在utils文件夾下新增BadiduOcr.js
文件,代碼如下:
/* 百度識別封裝 */ function BadiduOcr() { return new Promise(function (resolve, reject) { // 圖片識別 wx.chooseMedia({ // 車牌圖片/拍照 count: 1, // 最多可以選擇的文件個數 mediaType: ['image'], //文件類型 sizeType: ['original', 'compressed'], //是否壓縮所選文件 sourceType: ['album', 'camera'], // 圖片來源 success(res) { //調用照片選擇成功的回調函數 console.log(res); //圖片編碼部分核心代碼 上傳到接口需要將圖片轉為base64格式 wx.getFileSystemManager().readFile({ filePath: res.tempFiles[0].tempFilePath, encoding: 'base64', //編碼格式 success(ans) { // console.log(ans.data) wx.showLoading({ title: '識別中' }) //ans.data:保存瞭圖片轉碼之後的數據 // 1.請求獲取百度的access_token wx.request({ //url中的&client_id=client-i&client_secret=client—s中的參數client-i和client—s需要申請百度識別的賬號和密碼,具體申請流程參考上面 url: 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=你的client_id&client_secret=你的client_secret', data: {}, //請求參數,此處沒有參數,則置空 header: { 'content-type': 'application/x-www-form-urlencoded' // 默認值 }, success(rep) { var access_token = rep.data.access_token; console.log("access_token:", access_token) // 2.帶著token與轉碼後的圖片編碼請求百度OCR接口,對圖片進行識別 wx.request({ url: 'https://aip.baidubce.com/百度識別的具體接口?access_token=' + access_token, method: 'POST', header: { 'Content-Type': 'application/x-www-form-urlencoded' }, data: { image: ans.data, //ans.data:圖片編碼 }, success(_res) { wx.hideLoading(); resolve(_res) console.log("識別成功:", _res) }, fail(_res) { wx.hideLoading(); wx.showToast({ title: '請求出錯', icon: 'none' }) reject(_res) } }) }, fail(rep) { wx.hideLoading(); wx.showToast({ title: '請求出錯', icon: 'none' }) reject(rep) } }); }, fail(res) { wx.hideLoading(); wx.showToast({ title: '所選圖片編碼失敗,請重試', icon: 'none' }) reject(res) } }) }, fail(res) { wx.hideLoading(); wx.showToast({ title: '圖片選擇失敗,請重試', icon: 'none' }) reject(res) } }) }) } module.exports = { BadiduOcr: BadiduOcr }
調用
<button width="200rpx" height="64rpx" size="{{30}}" bindtap="getNum" bold>百度識別</tui-button>
import { BadiduOcr } from '../../utils/BadiduOcr' Page({ /* 選擇文件,識別 */ getNum() { BadiduOcr().then(res => { console.log(res); if (res.statusCode == 200) { wx.showToast({ title: '識別成功', }) } }).catch(err => { console.log(err); }) }, })
到此這篇關於微信小程序使用百度AI識別接口的通用封裝Promise的文章就介紹到這瞭,更多相關微信小程序Promise封裝接口內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- uni-app調取接口的3種方式以及封裝uni.request()詳解
- 詳解微信小程序官方人臉核身認證
- 微信小程序如何處理token過期問題
- uniapp中常用的幾種提示彈框
- Python OpenCV實現人物動漫化效果