鸿蒙:使用Image组件展示相册图片或rawfile图片

1、前言

实现展示相册图片的方法,通过获取到图片的uri,将uri交给Image组件展示即可。如果是展示本地的rawfile图片,那么只需要获取图片的文件名及后缀,然后将这个字符串交给Image,通过$rawfile()方式展示即可。

2、参考文档

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/photoaccesshelper-photoviewpickerhttps://developer.huawei.com/consumer/cn/doc/harmonyos-guides/photoaccesshelper-photoviewpicker

3、核心思路

  1. 通过媒体文件资源管理器拉起系统相册,然后获取到选择的图片uri,将uri数组每一项字符串交给Image组件渲染
  2. 项目rawfile目录下的图片加载则更为简单,将内部图片的文件名+后缀,放到同一个字符串数组中,我们直接循环渲染即可,每一项交给Image,通过$rawfile()展示。

4、运行效果

5、完整代码

Index.ets

复制代码
import { photoAccessHelper } from '@kit.MediaLibraryKit';

async function selectImage(): Promise<Array<string>> {
  const photoSelectOptions = new photoAccessHelper.PhotoSelectOptions();
  photoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE; // 过滤选择媒体文件类型为IMAGE。
  photoSelectOptions.maxSelectNumber = 5; // 选择媒体文件的最大数目。
  const photoViewPicker = new photoAccessHelper.PhotoViewPicker();
  const photoSelectResult = await photoViewPicker.select(photoSelectOptions)
  return photoSelectResult.photoUris
}

function selectImages(): Array<string> {
  const arr: Array<string> = ["1.jpg", "2.jpg", "3.jpg"]

  return arr
}

@Entry
@ComponentV2
export struct Index {
  @Local imageUri: string[] = []

  build() {
    List() {
      ListItem() {
        Column({ space: 20 }) {

          ForEach(this.imageUri, (uri: string) => {
            Image(uri)
              .width(200)
            Text(uri)
            Image($rawfile(uri))
              .width(200)
          })

          Button("从相册选择图片并展示")
            .onClick(async () => {
              this.imageUri = await selectImage()
            })

          Button("展示项目本地的rawfile图片")
            .onClick(() => {
              this.imageUri = selectImages()
            })

        }
        .width("100%")
        .justifyContent(FlexAlign.Center)

      }
    }
    .width("100%")
    .height("100%")
  }
}

有帮助的话,可以点赞或收藏

相关推荐
Utopia^20 小时前
鸿蒙flutter第三方库适配 - 联系人备份工具
flutter·华为·harmonyos
音视频牛哥21 小时前
国产化最后一公里:鸿蒙 NEXT 低延迟音视频技术方案破局之路
音视频·harmonyos·鸿蒙next·鸿蒙rtmp播放器·鸿蒙rtsp播放器·鸿蒙next rtsp播放器·鸿蒙next rtmp播放器
zhgjx-dengkewen1 天前
eNSP实验:配置NAT Server
服务器·网络·华为·智能路由器
HwJack201 天前
HarmonyOS UI 开发中eventHub用标准化 OHMUrl 拿捏集成态 HSP
华为·harmonyos
音视频牛哥1 天前
鸿蒙 NEXT 行业视频方案选型:消费级播放器、自研、SmartMediaKit,哪条路走得通?
华为·harmonyos·大牛直播sdk·鸿蒙rtsp播放器·鸿蒙next rtsp播放器·鸿蒙next rtmp播放器·鸿蒙 rtmp播放器
Geek_Vision1 天前
鸿蒙原生APP接入小程序运行能力:数字园区场景实战复盘
微信小程序·harmonyos
音视频牛哥1 天前
鸿蒙 NEXT 下 RTSP/RTMP 播放器如何调用录像与快照?
华为·harmonyos·鸿蒙rtmp播放器·鸿蒙rtsp播放器·鸿蒙next rtsp播放器·鸿蒙next rtmp播放器·鸿蒙rtsp rtmp流录像
音视频牛哥1 天前
鸿蒙 NEXT 下 RTSP/RTMP 播放器如何实时调节音量、亮度、对比度与饱和度?
harmonyos·音视频开发·直播
音视频牛哥1 天前
鸿蒙 NEXT RTSP/RTMP 播放器如何回调 RGB 数据并实现 AI 视觉算法分析
人工智能·算法·harmonyos·鸿蒙rtmp播放器·鸿蒙rtsp播放器·鸿蒙next rtsp播放器·鸿蒙next rtmp播放器
音视频牛哥1 天前
HarmonyOS鸿蒙 Next 中如何实现低延迟 RTSP 流媒体播放?
华为·harmonyos·鸿蒙next·鸿蒙rtmp播放器·鸿蒙rtsp播放器·鸿蒙next rtsp播放器·鸿蒙next rtmp播放器