【SH】微信小程序调用EasyDL零门槛AI开发平台的图像分类研发笔记

文章目录

微信小程序字符串

字符串模板

这是ES6引入的特性,允许你通过反引号(`)创建模板字符串,并在其中嵌入变量或表达式。

javascript 复制代码
let name = 'Alice';
let age = 25;
let message = `My name is ${name} and I am ${age} years old.`;
console.log(message);  // 输出: My name is Alice and I am 25 years old.

字符串拼接

通过加号(+)将多个字符串和变量拼接在一起。

javascript 复制代码
let name = 'Alice';
let age = 25;
let message = 'My name is ' + name + ' and I am ' + age + ' years old.';
console.log(message);  // 输出: My name is Alice and I am 25 years old.

上传图片

图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式 注意请去掉头部

媒体 / 图片 / wx.chooseImage(弃用)
媒体 / 视频 / wx.chooseMedia
文件 / FileSystemManager / FileSystemManager.readFile

编写JS代码

javascript 复制代码
// index.js
Page({
  /**
   * 页面的初始数据
   */
  data: {
    imagePaths: [], // 用于存储图片路径的数组
    imageBase64: '', // 用于存储图片转换成的Base64编码
  },

  // 按钮点击事件处理函数
  chooseAndUploadImage: async function () {
    try {
      //刷新数据
      this.setData({
        imagePaths: [],
        imageBase64:'',
        imageClassification:{}
      });

      // 图片上传
      const getImageInfo = await this.uploadImage();
      console.log('图片上传成功', getImageInfo.tempFiles);
      this.setData({
        imagePaths: [getImageInfo.tempFiles[0].tempFilePath]
      });
      // 编码转换
      const getBase64 = await this.convertToBase64(getImageInfo.tempFiles[0].tempFilePath);
      console.log('转换Base64编码成功!');
      // console.log('编码转换成功', getBase64.data);
      this.setData({
        imageBase64: getBase64.data
      });
      // console.log('页面Base64编码参数值:', this.data.imageBase64);

    } catch (error) {
      // 处理错误
      console.error('图片上传操作失败:', error);
      // 可以给用户一个错误提示
      // wx.showToast({ title: '请求失败', icon: 'none' });
    }
  },
  uploadImage: function () {
    return new Promise((resolve, reject) => {
      // 选择图片
      wx.chooseMedia({
        count: 1, // 允许选择的图片数量
        mediaType: ['image'], // 文件类型
        sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机
        sizeType: ['original', 'compressed'], // 是否压缩所选文件,基础库2.25.0前仅对 mediaType 为 image 时有效,2.25.0及以后对全量 mediaType 有效 
        camera: 'back', // 仅在 sourceType 为 camera 时生效,使用前置或后置摄像头
        success(res) {
          resolve(res)
          // 上传成功后的回调
          // console.log('上传成功', res.tempFiles); // 这里可以处理服务器返回的数据
          // console.log(res.tempFiles[0].tempFilePath)
          // console.log(res.tempFiles[0].size)
        },
        fail(err) {
          reject(err);
          // 选择图片失败后的回调
          console.error('选择图片失败', err);
        }
      });
    });
  },
  // 图片转base64编码函数
  convertToBase64: function (filePath) {
    return new Promise((resolve, reject) => {
      const fs = wx.getFileSystemManager();
      fs.readFile({
        filePath: filePath,
        encoding: 'base64',
        success(res) {
          // const base64Data = 'data:image/png;base64,' + res.data; // 注意:这里假设图片是png格式,你需要根据实际情况修改MIME类型
          resolve(res);
        },
        fail(err) {
          reject(err);
        }
      });
    });
  }
})

编写wxml代码

html 复制代码
<!--pages/index/index.wxml-->
<view class="disease">
  <button bindtap="chooseAndUploadImage">选择图片</button>
  <block wx:if="{{imagePaths.length > 0}}">
    <!-- <image src="{{imagePaths[0]}}" mode="widthFix" style="width: 100%;"></image> -->
    <image class="fixed-image" src="{{imagePaths[0]}}" mode="aspectFit"></image>
  </block>
  <block wx:else>
    <text>没有选择图片</text>
  </block>
</view>

编写wxss代码

css 复制代码
/* 疾病图片样式 */
.disease {
  text-align: center;
  padding: 20px;
}

.fixed-image {
  width: 100%; /* 宽度设为100% */
  height: 300px; /* 你可以根据需要调整高度 */
  object-fit: cover; /* 确保图片按比例缩放并填充容器 */
  display: block; /* 移除图片下方的默认间隙 */
  margin: 0 auto; /* 居中显示 */
}

GET请求测试

编写测试代码

在页面的JS文件中写入如下代码:

javascript 复制代码
// 假设这是一个页面(page)的 JS 文件
Page({
  data: {
    responseData: {}  // 用于存储服务器返回的响应数据
  },

  // 按钮点击事件,触发 POST 请求
  handleButtonClick: function() {
    wx.request({
      url: 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=替换为你的API_KEY&client_secret=替换为你的SECRET_KEY',  // 请求的 URL
      method: 'GET',  // 指定请求方法为 GET
      header: {  // 根据服务器要求设置请求头
        'content-type': 'application/json'
      },
      success: (res) => {
        // 请求成功时执行的回调函数
        console.log('请求成功', res.data);
        this.setData({
          responseData: res.data  // 将响应数据存储在页面的 data 中
        });
      },
      fail: (error) => {
        // 请求失败时执行的回调函数
        console.error('请求失败', error);
      }
    });
  }
});

在 WXML 文件中添加一个按钮:

html 复制代码
<!-- 假设这是页面的 WXML 文件 -->
<view>
  <button bindtap="handleButtonClick">发送 POST 请求</button>
  <view>
    <!-- 显示服务器返回的响应数据 -->
    <text>{{responseData['refresh_token']}}</text>
  </view>
</view>

域名不合法问题


解决方案

请参考文档:基础能力 / 网络 / 使用说明

网页登录微信小程序管理后台,【管理->开发管理->服务器域名->修改】,添加域名即可。

微信开发者工具,【详情->项目配置->域名信息】,显示新增的域名说明添加成功。

GET和POST请求测试

GET请求的返参作为POST请求的入参

相关推荐
星河梦瑾1 小时前
【2025最新版】搭建个人博客教程
linux·经验分享·笔记·python·安全
IOT.FIVE.NO.12 小时前
Linux学习笔记15 何为HDD,SSD?sata?PCIE?分区,MBR,GPT分区的理解
linux·笔记·学习
Evand J2 小时前
自适应卡尔曼滤波(包括EKF、UKF、CKF等)的创新思路——该调什么、不该调什么
开发语言·笔记·matlab·卡尔曼滤波·自适应滤波
憨憨2号2 小时前
RUST学习笔记
笔记·学习·rust
Genevieve_xiao3 小时前
【数模学习笔记】灰色关联分析
笔记·学习·数学建模
gikod3 小时前
【笔记】架构上篇Day6 法则四:为什么要顺应技术的生命周期?
大数据·人工智能·笔记·架构
Genevieve_xiao3 小时前
【数模学习笔记】模糊综合评价
笔记·学习·数学建模
炸毛的飞鼠3 小时前
虚拟机Ubuntu以及pwn的工具安装
笔记·学习·ubuntu
悟空非空也3 小时前
178K⭐排名第一计算机面试笔记
笔记·面试·职场和发展
Eshin_Ye4 小时前
transformer学习笔记-自注意力机制(1)
笔记·学习·transformer·attention·注意力机制