• 利用百度大脑,快速搭建一个红酒识别的小程序


    各位开发者 接口文档一定要看哦

    接口文档 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~~~

    作者:小帅

  • 相关阅读:
    语言及其文法
    编译原理绪论
    数据库系统绪论
    Flask系列-模板
    进程调度
    Flask系列-程序基本结构
    针对博客园上传md文件有点麻烦的解决方案
    博客样式存档二 (目前样式)
    [省选联考 2020 A 卷] 组合数问题
    退役划水(2)
  • 原文地址:https://www.cnblogs.com/AIBOOM/p/11576497.html
Copyright © 2020-2023  润新知