鸿蒙NEXT上传图片功能PhotoViewPicker

鸿蒙NEXT上传图片功能PhotoViewPicker核心功能解析 #ArkTS#鸿蒙Next#HarmonyOS_SDK应用服务#HarmonyOS 语言

PhotoViewPicker 是鸿蒙系统中用于媒体资源选择的核心组件,通过它可以便捷地实现图片、视频等媒体文件的选择功能。下面从基本用法、参数配置到高级应用进行全面解析:

一、PhotoViewPicker 基础用法

PhotoViewPicker 的使用流程主要分为三步:

  1. 创建实例
  2. 配置参数
  3. 启动选择器获取结果

以下是最基本的使用示例:

import photoAccessHelper from "@ohos.photoAccess.photoAccessHelper";

async function pickImage() {
  try {
    // 1. 创建选择器实例
    const picker = photoAccessHelper.createPhotoViewPicker();

    // 2. 配置选择参数(此处使用默认配置)
    const options = {
      MIMEType: photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE, // 只选择图片
      maxSelectNumber: 1, // 最多选择张数
      isSearchSupported: true, // 显示搜索
      isPhotoTakingSupported: true, // 支持拍照
      recommendationOptions: true, // 智能推荐
      preselectedUris: true, // 预览文件
      isPreviewForSingleSelectionSupported: true, // 单选是否支持预览
    };

    // 3. 启动选择器并获取结果
    const selectedAssets = await picker.select(options);

    if (selectedAssets.photoUris.length) {
      // 处理选择的资源
      console.info("选择的资源:", selectedAssets.photoUris);
    }
  } catch (error) {
    console.error("选择图片失败:", error);
  }
}

二、关键参数详解

PhotoViewPicker 的参数配置非常灵活,可以根据需求定制选择器的行为:

const options = {
  MIMEType: photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE, // 只选择图片
  maxSelectNumber: 1, // 最多选择张数
  isSearchSupported: true, // 显示搜索
  isPhotoTakingSupported: true, // 支持拍照
  recommendationOptions: true, // 智能推荐
  preselectedUris: true, // 预览文件
  isPreviewForSingleSelectionSupported: true, // 单选是否支持预览
};

三、MIMEType 参数深度解析

MIMEType 参数是 PhotoViewPicker 中非常强大的一个配置项,它允许你精确控制选择器中显示的文件类型:

// 示例1:只允许选择JPEG和PNG图片
IMAGE_TYPE = 'image/*',
// 示例2:只允许选择视频文件
VIDEO_TYPE = 'video/*',
// 示例3:
MOVING_PHOTO_IMAGE_TYPE = 'image/movingPhoto'
// 示例4:允许所有
IMAGE_VIDEO_TYPE = '*/*',

#你小时候最想从事什么职业#
全部评论

相关推荐

深拷贝(Deep Copy)和浅拷贝(Shallow Copy)都是在编程中处理对象或数据的复制操作。浅拷贝创建一个新对象或数据结构,其中包含原始对象的引用。换句话说,新对象与原始对象共享相同的内存地址,因此对其中一个对象进行更改会影响到另一个对象。浅拷贝仅复制对象的第一层结构,而不会递归复制嵌套的对象或数据。深拷贝创建一个全新的对象或数据结构,其中包含原始对象完全独立的副本。新对象与原始对象具有不同的内存地址,因此彼此之间的更改是相互独立的。深拷贝会递归复制所有嵌套的对象或数据,确保整个对象及其子对象都被复制。区别:https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mg58Em&uuid=4e254dc3fdff4e8689fd57ad2d828b18内存引用:浅拷贝复制的是对象的引用,深拷贝复制的是对象的值。对象的变化:对浅拷贝的修改会影响原始对象,因为它们共享相同的引用。而对深拷贝的修改不会影响原始对象。嵌套对象或数据的复制:浅拷贝仅复制第一层对象或数据,嵌套的对象或数据仍然是共享的。深拷贝通过递归复制嵌套的对象或数据,确保每个对象都有独立的副本。在实际编程中,选择使用深拷贝还是浅拷贝取决于具体的需求。如果需要对对象进行修改而不影响原始对象,或者处理嵌套的对象结构,那么深拷贝是更合适的选择。而对于简单的数据结构或者只需要引用原始对象的情况,浅拷贝可能更加高效和节省内存。
2025.06.07 在牛客打卡319天!
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务