前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【征稿计划第二期】【使用攻略】【红酒识别】快速接入百度智能小程序

【征稿计划第二期】【使用攻略】【红酒识别】快速接入百度智能小程序

作者头像
小帅丶
发布2021-12-28 13:08:15
4280
发布2021-12-28 13:08:15
举报
文章被收录于专栏:XAIXAI

本期活动,小帅就来带开发者们快速将红酒识别接入百度智能小程序哦。

接口文档 https://ai.baidu.com/docs#/ImageClassify-API/71e05fb6

创建自己的百度智能小程序

官网链接 https://smartprogram.baidu.com/developer/index.html

小程序名称信息填写

名称需要审核哦最好不要重名、选择一个自己小程序的LOGO、简介、服务范围(一定要选择正确哦)、标签就自己找针对性的关键词添加即可

查看自己的小程序

点击名称 进去

设置-开发设置 记录自己的小程序id appkey、appsecret等相关重要信息 备用

继续往下。找到服务器域名 并配置百度ai接口域名 和 图片转base64的域名

开发工具创建小程序

填写自己小程序的appid、名称、项目目录后点击完成即可

开始编写小程序代码

先来写接口工具类等其他方法

图片转base64 百度智能小程序暂无直接可用组件或api。小帅为了方便大家。就封装了一个在线的http的接口供大家使用。 接口文档地址 https://www.kancloud.cn/ydxiaoshuai/image2base64/1170322

代码语言:javascript
复制
/**
 * 调用百度红酒识别示例代码 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

页面需要一个上传图片的按钮 和图片回显的区域 还有接口识别返回的数据显示的区域

代码语言:javascript
复制
<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样式

代码语言:javascript
复制
.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数据。再给接口进行识别。返回数据进行页面渲染。步骤不是很多哦

代码语言:javascript
复制
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: '图片转换出错'
                            });
                        }
                    }
                });
            }
        });
},
});

准备图片进行功能测试

红酒图

小程序演示图

上传代码进行发布

上传代码

版本号、描述 自己定义即可 最低基础库 需要选择哦

提交审核

开发管理-开发版本 提交审核 也可以选为体验版 供部分人员优先体验

测试账号 如果没有 填写 无 即可 对自己版本的描述 自己编写即可 提交审核即可

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建自己的百度智能小程序
    • 小程序名称信息填写
      • 查看自己的小程序
      • 开发工具创建小程序
      • 开始编写小程序代码
        • 先来写接口工具类等其他方法
          • 编写页面样式及相关代码
            • 页面index.swan
            • 样式index.css
          • 编写页面处理代码
          • 准备图片进行功能测试
            • 红酒图
              • 小程序演示图
              • 上传代码进行发布
                • 上传代码
                  • 提交审核
                  相关产品与服务
                  云开发 CloudBase
                  云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档