本期活动,小帅就来带开发者们快速将红酒识别接入百度智能小程序哦。
接口文档 https://ai.baidu.com/docs#/ImageClassify-API/71e05fb6
创建自己的百度智能小程序
小程序名称信息填写
名称需要审核哦最好不要重名、选择一个自己小程序的LOGO、简介、服务范围(一定要选择正确哦)、标签就自己找针对性的关键词添加即可
查看自己的小程序
点击名称 进去
设置-开发设置 记录自己的小程序id appkey、appsecret等相关重要信息 备用
继续往下。找到服务器域名 并配置百度ai接口域名 和 图片转base64的域名
开发工具创建小程序
填写自己小程序的appid、名称、项目目录后点击完成即可
开始编写小程序代码
先来写接口工具类等其他方法
图片转base64 百度智能小程序暂无直接可用组件或api。小帅为了方便大家。就封装了一个在线的http的接口供大家使用。
接口文档地址 https://www.kancloud.cn/ydxiaoshuai/image2base64/1170322
/**
* 调用百度红酒识别示例代码 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
页面需要一个上传图片的按钮 和图片回显的区域 还有接口识别返回的数据显示的区域
<view>
<view class="img_wrap">
<image src="{{img}}" mode='aspectFill'/>
</view>
<view class='chooseImg' bindtap="uploads">
<text>拍照/选取图片</text>
</view>
<view s-if="{{result}}">
<view class="out_text">红酒名称 <text class="inner_text">{{result.wineNameCn}}</text></view>
<view s-if="{{result.hasdetail==1}}">
<view class="out_text">所属国家 <text class="inner_text">{{result.countryCn}}</text></view>
<view class="out_text">红酒产区 <text class="inner_text">{{result.regionCn}}</text></view>
<view class="out_text">所属酒庄 <text class="inner_text">{{result.wineryCn}}</text></view>
<view class="out_text">糖分类型 <text class="inner_text">{{result.classifyBySugar}}</text></view>
<view class="out_text">红酒类型 <text class="inner_text">{{result.classifyByColor}}</text></view>
<view class="out_text">红酒色泽 <text class="inner_text">{{result.color}}</text></view>
<view class="out_text">品尝温度 <text class="inner_text">{{result.tasteTemperature}}</text></view>
<view class="out_text">酒品描述 <text class="inner_text">{{result.description}}</text></view>
</view>
</view>
</view>
样式index.css
给一些稍微友好 好看的ui样式
.image {
width: 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: 微软雅黑;
width: 400rpx;
height: 100rpx;
text-align: center;
line-height: 90rpx;
border-radius:50rpx;
background-color:#3366FF;
margin-top:10px;
}
.img_wrap {
width: 750rpx;
height: 620rpx;
background: #ececec;
}
image {
width: 100%;
height: 100%;
max-height: 1
}
.msg {
margin: 20rpx 0;
text-align: center;
}
.table {
margin-top: 10rpx;
border: 0px solid darkgray;
}
.tr {
display: flex;
width: 100%;
justify-content: center;
height: 80rpx;
}
.td {
font-size: 28rpx;
width:40%;
display: flex;
justify-content: center;
text-align: center;
align-items: center;
}
.bg-w{
}
.bg-g{
background: white;
}
.th {
font-size: 28rpx;
width: 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: '图片转换出错'
});
}
}
});
}
});
},
});
准备图片进行功能测试
红酒图
小程序演示图
上传代码进行发布
上传代码
版本号、描述 自己定义即可 最低基础库 需要选择哦
提交审核
开发管理-开发版本 提交审核 也可以选为体验版 供部分人员优先体验
测试账号 如果没有 填写 无 即可 对自己版本的描述 自己编写即可 提交审核即可