接口文档 https://ai.baidu.com/docs#/ImageClassify-API/71e05fb6
如何创建应用。获取accesstoken 记得一定要看文档的接入指南哦。官方已经给了图文教程。小帅这里就不再重复说明了。
图片不清晰的请看这里 https://my.oschina.net/xshuai/blog/3075992
--------------------------------------------分割线--------------------------------------------
- 创建自己的百度智能小程序
官网链接 https://smartprogram.baidu.com/developer/index.html
- 小程序名称信息填写
名称需要审核哦最好不要重名、选择一个自己小程序的LOGO、简介、服务范围(一定要选择正确哦)、标签就自己找针对性的关键词添加即可
- 查看自己的小程序
设置-开发设置 记录自己的小程序id appkey、appsecret等相关重要信息 备用
继续往下。找到服务器域名 并配置百度ai接口域名 和 图片转base64的域名 https://www.ydxiaoshuai.cn https://aip.baidubce.com
- 开发工具创建小程序
填写自己小程序的appid、名称、项目目录后点击完成即可
- 开始编写小程序代码
图片转base64 百度智能小程序暂无直接可用组件或api。 小帅为了方便大家。就封装了一个在线的http的接口供大家使用。 接口说明地址 https://www.kancloud.cn/ydxiaoshuai/image2base64/1170322
先来写接口工具类等其他方法
baiduai.js
/** * 调用百度红酒识别示例代码 baiduai.js */ //图片转base64接口 let img2base64Url = 'https://www.ydxiaoshuai.cn/image/convert/base64/v1'; let accessToken = ''//自己的accessToken 根据实际情况可以进行封装 自动获取token let redwineUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/redwine';//红酒识别接口 //红酒接口 图片数据 返回结果 let redwineRequest = (base64Img,callback)=>{ //拼接接口body参数 let params = { image:base64Img } //发送接口请求 swan.request({ url: redwineUrl + '?access_token=' + accessToken, data:params, header: { 'content-type': 'application/x-www-form-urlencoded' }, method: 'POST', success:function(res){ callback.success(res.data) }, fail: function (res) { if (callback.fail) callback.fail() } }) } function getImg2base64(){ return img2base64Url; } //暴露出去的接口&参数 module.exports = { redwineRequest: redwineRequest, getImg2base64: getImg2base64 }
- 编写页面样式及相关代码
- 页面index.swan
页面需要一个上传图片的按钮 和图片回显的区域 还有接口识别返回的数据显示的区域 带html标签代码 老是被自动解析。只能图片示例了
样式index.css
给一些稍微友好 好看的ui样式
.image { 100%; height: 360rpx; } button{ font-family: 微软雅黑; } text{ font-family: 微软雅黑; } .page-body-info { display: flex; box-sizing: border-box; padding:60rpx; height:840rpx; border-top: 2rpx solid #D9D9D9; border-bottom: 2rpx solid #D9D9D9; align-items: center; justify-content: center; } .faceInfo{ font-size: 28rpx; display:block; margin:0 auto; margin-left: 33%; } .faceInfoValue{ color: #1BA0E1; letter-spacing:0px; } .chooseImg { display:block; margin:0 auto; color: rgb(255, 255, 255); font-size: 40rpx; font-family: 微软雅黑; 400rpx; height: 100rpx; text-align: center; line-height: 90rpx; border-radius:50rpx; background-color:#3366FF; margin-top:10px; } .img_wrap { 750rpx; height: 620rpx; background: #ececec; } image { 100%; height: 100%; max-height: 1 } .msg { margin: 20rpx 0; text-align: center; } .table { margin-top: 10rpx; border: 0px solid darkgray; } .tr { display: flex; 100%; justify-content: center; height: 80rpx; } .td { font-size: 28rpx; 40%; display: flex; justify-content: center; text-align: center; align-items: center; } .bg-w{ } .bg-g{ background: white; } .th { font-size: 28rpx; 48%; justify-content: center; background: #3366FF; color: #fff; display: flex; height: 80rpx; align-items: center; } .inner_text{ font-size: 36rpx; color: #1BA0E1; font-family: 微软雅黑; word-break: normal; word-wrap: break-word; } .out_text{ margin-top:20rpx; margin-left: 10rpx; margin-right: 10rpx; border: 1rpx solid rgb(238, 238, 238); padding:10rpx 10rpx; font-size: 36rpx; font-family: 微软雅黑; }
- 编写页面处理代码
需要上传图片到小帅的图片转base64接口。 返回base64数据。再给接口进行识别。 返回数据进行页面渲染。步骤不是很多哦
var app = getApp(); //引用封装的工具类方法、图片转base64接口地址 var redWine = require('../../utils/baiduai.js'); var img2base64Url = redWine.getImg2base64(); Page({ data: { title: '酒知识 一步即知', result:null, img:"" }, uploads: function() { var that = this; swan.chooseImage({ count: 1, sizeType: ['compressed'], success: res => { let image = ""; if(res.tempFiles[0].size > 4096*1024){ console.info('jinlaile '); swan.showToast({ title: '图片文件过大哦', icon:'none', mask:true, duration:1500 }); }else{ image = res.tempFilePaths[0]; } that.setData({ img:image }), swan.showLoading({ title: '信息正在赶来的路上', mask: true }), //上传图片进行base64转换 swan.uploadFile({ url: img2base64Url, filePath: image, name: 'file', success:function(res){ var data = res.data; console.info('图片转base64返回的结果:'+data.code); //如果成功,进行调用红酒识别接口 if(data.code==200){ redWine.redwineRequest(data.data.base64,{ //接口返回数据。对数据进行赋值 success(res){ swan.hideLoading(); that.setData({ result:res.result }) console.info(res) }, fail(res){ swan.hideLoading(); swan.showModal({ title: '识别失败', content: '稍后再试一试' }); } }) } else { swan.showModal({ title: '图片转换出错', content: '图片转换出错' }); } } }); } }); }, });
- 准备图片进行功能测试
- 红酒图
- 小程序演示图
- 上传代码进行发布
- 上传代码
版本号、描述 自己定义即可 最低基础库 需要选择哦
- 提交审核
开发管理-开发版本 提交审核 也可以选为体验版 供部分人员优先体验
测试账号 如果没有 填写 无 即可 对自己版本的描述 自己编写即可 提交审核即可
--------------------------------------------分割线--------------------------------------------
本次分享end~~~
作者:小帅