当前位置: 首页 > news >正文

简易分析 uni.chooseImage 拍照上传的基本知识点(附Demo)

目录

  • 前言
  • 1. 基本知识
  • 2. Demo

前言

🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF

基本的介绍也可看官网:uni.chooseImage(options)

以下知识点主要用于学习了解,从实战中出发

在这里插入图片描述

1. 基本知识

在Uni-app框架中,uni.chooseImage是一个用于让用户选择图片的API,支持从相册或相机选取图片,并返回选择的图片信息

以下是对其详细分析及Demo示例:

主要参数

参数类型是否必填说明
countNumber允许选择的图片数量,默认20
sizeTypeString[]图片尺寸类型
sourceTypeString[]图片来源类型
successFunction成功回调函数
failFunction失败回调函数
completeFunction无论成功与否都会执行的函数

基本的参数详解:

sizeType:图片尺寸,可选’resourceType’值包括:

  • 'original'(原图):选择原尺寸图片
  • 'compressed'(压缩图):选择压缩后的图片,适合上传至网络

sourceType:图片的来源类型,可选值包括:

  • 'album'(相册):从相册选择图片
  • 'camera'(相机):使用相机拍照
    若用户提供多个可选项,会弹出选择来源的界面;反之,若限制来源则直接跳转相应应用

success:选择图片成功后的回调,返回包含图片信息的result对象
fail:选择图片失败时的回调,返回错误信息
complete:无论成功与否,均会执行的回调函数

使用场景

  • 相册浏览:允许用户从相册中选择多张图片进行编辑或上传
  • 拍摄上传:用户可直接使用相机拍摄图片并上传至服务器
  • 图片预览:在上传前预览选中的图片内容,确保无误后提交
  • 社交功能:在社交媒体应用中选择并上传用户头像或动态图片

2. Demo

<template>
  <view class="container">
    <!-- 选择图片按钮 -->
    <button class="choose-btn" @click="chooseImage">
      选择图片(最多5张)
    </button>

    <!-- 预览按钮 -->
    <button class="preview-btn" @click="previewImage">
      预览图片
    </button>

    <!-- 图片展示区域 -->
    <view class="image-container">
      <image
          v-for="(image, index) in images"
          :key="index"
          :src="image"
          class="preview-image"
          @click="previewIndex = index"
      ></image>
    </view>
  </view>
</template>

基本的js信息:

export default {
  data() {
    return {
      images: [],
      currentImageIndex: 0
    };
  },
  
  methods: {
    chooseImage() {
      const that = this;
      uni.chooseImage({
        count: 5, // 最多选择5张图片
        sizeType: ['compressed'], // 只选择压缩后的图片
        sourceType: ['album', 'camera'], // 允许从相册或相机选择
        success: function(result) {
          that.images = result.tempFilePaths;
          console.log('选择的图片路径:', result.tempFilePaths);
        },
        fail: function(err) {
          console.error('图片选择失败:', err);
        },
        complete: function() {
          console.log('图片选择操作完成');
        }
      });
    },
    
    previewImage() {
      if (!this.images.length) {
        uni.showToast({
          title: '尚未选择图片',
          icon: 'none'
        });
        return;
      }
      
      uni.previewImage({
        urls: this.images,
        current: this.images[this.currentImageIndex]
      });
    }
  }
};
.container {
  padding: 20px;
  display: flex;
  flex-direction: column;
  align-items: center;
  background-color: #f5f5f5;
  min-height: 100vh;
}

.choose-btn, .preview-btn {
  margin: 10px;
  padding: 12px 24px;
  font-size: 16px;
  border: none;
  border-radius: 8px;
  background-color: #007AFF;
  color: white;
  margin-bottom: 20px;
}

.choose-btn:active, .preview-btn:active {
  background-color: #0063CC;
}

.image-container {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  max-width: 600px;
}

.preview-image {
  width: 100px;
  height: 100px;
  border-radius: 8px;
  object-fit: cover;
}

相关文章:

  • 医疗AI测试实战:如何确保人工智能安全赋能医疗行业?
  • 使用Python爬虫根据关键词获取衣联网商品列表:实战指南
  • 若依框架-给sys_user表添加新字段并获取当前登录用户的该字段值
  • 在Spring Boot项目中如何实现获取FTP远端目录结构
  • PHP框架加载不上.env文件中的变量
  • 选择 DotNetBrowser 还是 EO.WebBrowser
  • 安全的实现数据备份和恢复
  • PawSQL for TDSQL:腾讯云TDSQL数据库性能优化全攻略
  • Linux第18节 --- 重定向与文件IO的基本认识
  • 接口自动化入门 —— swagger/word/excelpdf等不同种类的接口文档理解!
  • std::any详解
  • Java实现死锁
  • 【沐渥科技】氮气柜日常如何维护?
  • nginx 打造高性能 API 网关(‌Building a High-Performance API Gateway with Nginx)
  • Deepin通过二进制方式升级部署高版本 Docker
  • 数据库系统概论(四)关系模型的数据结构及形象化
  • 【eNSP实战】交换机配置端口隔离
  • 软件IIC和硬件IIC的主要区别,用标准库举例!
  • wpf label 内容绑定界面不显示
  • MVCC实现原理
  • 商务部回应稀土出口管制问题
  • 一图看懂|印巴交火后,双方基地受损多少?
  • 特朗普促卡塔尔说服伊朗放弃核计划,伊朗总统:你来吓唬我们?
  • 中国结算澄清“严查场外配资”传闻:账户核查为多年惯例,无特殊安排
  • 《新时代的中国国家安全》白皮书(全文)
  • 西藏日喀则市拉孜县发生5.5级地震,震源深度10公里