0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙开发教学-图片的引用

jf_46214456 ? 来源:jf_46214456 ? 作者:jf_46214456 ? 2024-02-01 17:36 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Image通过调用接口来创建,接口调用形式如下:

Image(src: string | Resource | media.PixelMap)
Image(src: string | Resource | media.PixelMap)
Image(src: string | Resource | media.PixelMap)

该接口通过图片数据源获取图片,支持本地图片和网络图片的渲染展示。其中,src是图片的数据源。

加载图片资源

Image支持加载存档图(重点)、多媒体像素图(了解即可)两种类型。

存档图类型数据源 存档图类型的数据源可以分为本地资源、网络资源、Resource资源、媒体库资源和base64。

  • 本地资源

创建文件夹,将本地图片放入ets文件夹下的任意位置。 Image组件引入本地图片路径,即可显示图片(根目录为ets文件夹)。

Image('images/view.jpg')
.width(200)
.width(200)
.width(200)
  • 网络资源

引入网络图片需申请权限ohos.permission.INTERNET,具体申请方式请参考权限申请声明。此时,Image组件的src参数为网络图片的链接。

Image('https://www.example.com/example.JPG') // 实际使用时请替换为真实地址
Image('https://www.example.com/example.JPG') // 实际使用时请替换为真实地址
Image('https://www.example.com/example.JPG') // 实际使用时请替换为真实地址
  • Resource资源

使用资源格式可以跨包/跨模块引入图片,resources文件夹下的图片都可以通过$r资源接口读取到并转换到Resource格式。
image.png

调用方式:

Image($r('app.media.icon'))
Image($r('app.media.icon'))
Image($r('app.media.icon'))

还可以将图片放在rawfile文件夹下。

image.png

还可以将图片放在rawfile文件夹下。

调用方式:

Image($rawfile('snap'))
Image($rawfile('snap'))
Image($rawfile('snap'))
  • 媒体库file://data/storage 支持file://路径前缀的字符串,用于访问通过媒体库提供的图片路径。 a. 调用接口获取图库的照片url。
import picker from '@ohos.file.picker';
@Entry
@Component
struct Index {
  @State imgDatas: string[] = [];
  // 获取照片url集
  getAllImg() {
    
    let result = new Array< string >();
    try {
      let PhotoSelectOptions = new picker.PhotoSelectOptions();
      PhotoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE;
      PhotoSelectOptions.maxSelectNumber = 5;
      let photoPicker = new picker.PhotoViewPicker();
      photoPicker.select(PhotoSelectOptions).then((PhotoSelectResult) = > {
        this.imgDatas = PhotoSelectResult.photoUris;
        console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ' + JSON.stringify(PhotoSelectResult));
      }).catch((err) = > {
        console.error(`PhotoViewPicker.select failed with. Code: ${err.code}, message: ${err.message}`);
      });
    } catch (err) {
      console.error(`PhotoViewPicker failed with. Code: ${err.code}, message: ${err.message}`);    }
  }

  // aboutToAppear中调用上述函数,获取图库的所有图片url,存在imgDatas中
  async aboutToAppear() {
    this.getAllImg();
  }
  // 使用imgDatas的url加载图片。
  build() {
    Column() {
      Grid() {
        ForEach(this.imgDatas, item = > {
          GridItem() {
            Image(item)
              .width(200)
          }
        }, item = > JSON.stringify(item))
      }
    }.width('100%').height('100%')
  }
}
}
}

b. 从媒体库获取的url格式通常如下。

Image('file://media/Photos/5')
.width(200)
.width(200)
.width(200)
  • base64 路径格式为data:image/[png|jpeg|bmp|webp];base64,[base64 data],其中[base64 data]为Base64字符串数据。 Base64格式字符串可用于存储图片的像素数据,在网页上使用较为广泛。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    9069

    浏览量

    154267
  • 数据源
    +关注

    关注

    1

    文章

    65

    浏览量

    9943
  • 鸿蒙
    +关注

    关注

    60

    文章

    2656

    浏览量

    44339
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【HarmonyOS 5】金融应用开发鸿蒙组件实践

    【HarmonyOS 5】金融应用开发鸿蒙组件实践 ##鸿蒙开发能力 ##HarmonyOS SDK应用服务##鸿蒙金融类应用 (金融理财#
    的头像 发表于 07-11 18:20 ?368次阅读
    【HarmonyOS 5】金融应用<b class='flag-5'>开发</b><b class='flag-5'>鸿蒙</b>组件实践

    【HarmonyOS 5】鸿蒙应用实现发票扫描、文档扫描输出PDF图片或者表格的功能

    【HarmonyOS 5】鸿蒙应用实现发票扫描、文档扫描输出PDF图片或者表格的功能 ##鸿蒙开发能力 ##HarmonyOS SDK应用服务##鸿
    的头像 发表于 07-11 18:16 ?395次阅读
    【HarmonyOS 5】<b class='flag-5'>鸿蒙</b>应用实现发票扫描、文档扫描输出PDF<b class='flag-5'>图片</b>或者表格的功能

    鸿蒙开发API9 到 API12,有哪些不同

    ? ##HarmonyOS 应用开发## 虽然API9已经属于过时了,但是现在很多学校里教的还是基于API9的鸿蒙开发,当学生需要在毕业设计中使用API12进行开发时,还是需要先掌握一
    发表于 06-29 22:47

    鸿蒙5开发宝藏案例分享---优化应用包体积大小问题

    ?** 鸿蒙包体积优化实战:藏在官方文档里的宝藏技巧!** 大家好呀~我是你们的鸿蒙开发小伙伴!今天在翻官方文档时,发现了一个超实用的「包体积优化」案例宝藏库!这些技巧明明能大幅提升应用体验,却很
    发表于 06-13 10:09

    鸿蒙5开发宝藏案例分享---跨线程性能优化指南

    ;>Worker</span>做多线程开发时,总遇到对象跨线程卡顿的问题,原来鸿蒙早就提供了解决方案。下面结合代码和实战案例,带你彻底玩转性能优化! 一、痛点:跨线程
    发表于 06-12 17:13

    鸿蒙5开发宝藏案例分享---应用并发设计

    ?** 鸿蒙并发编程实战指南:解锁ArkTS多线程黑科技** 嘿,开发者朋友们! 今天给大家扒一扒鸿蒙官方文档里藏着的并发编程宝藏—— 100+实战场景解决方案 !从金融理财到游戏开发
    发表于 06-12 16:19

    鸿蒙5开发宝藏案例分享---应用接续提升内容发布体验

    ?【开发经验分享】鸿蒙应用接续功能实战:这些隐藏案例助你实现跨设备丝滑流转! 各位开发者小伙伴们好呀~今天在肝项目时意外解锁了HarmonyOS的一个\"宝藏技能\"——应用接续
    发表于 06-03 18:25

    鸿蒙5开发宝藏案例分享---一多开发实例(图片美化)

    ?【鸿蒙开发宝藏案例分享】一次搞定多端适配的图片美化应用开发思路!? Hey小伙伴们~ 今天在翻鸿蒙文档时挖到一个超实用的大宝藏!原来官方早
    发表于 06-03 16:09

    开发者必备!华清远见WS63星闪开发板从入门到实战:物联网教学/毕设/竞赛全场景资源包

    通信,支持鸿蒙+星闪生态的协同开发。该开发板可用于星闪开发鸿蒙系统设备开发、物联网应用项目
    的头像 发表于 04-10 14:13 ?1128次阅读
    <b class='flag-5'>开发</b>者必备!华清远见WS63星闪<b class='flag-5'>开发</b>板从入门到实战:物联网<b class='flag-5'>教学</b>/毕设/竞赛全场景资源包

    鸿蒙北向开发OpenHarmony5.0 DevEco Studio开发工具安装与配置

    本文介绍OpenHarmony5.0 DevEco Studio开发工具安装与配置,鸿蒙北向开发入门必备!由触觉智能Purple Pi OH鸿蒙开发
    的头像 发表于 03-28 18:05 ?964次阅读
    <b class='flag-5'>鸿蒙</b>北向<b class='flag-5'>开发</b>OpenHarmony5.0 DevEco Studio<b class='flag-5'>开发</b>工具安装与配置

    HarmonyOS 应用开发赋能套件:鸿蒙原生应用开发的 “神助攻”

    随着鸿蒙生态的快速发展,越来越多的开发者投身于鸿蒙原生应用的开发中。然而,在学习鸿蒙原生应用开发
    发表于 02-17 16:37

    《HarmonyOS第一课》焕新升级,赋能开发者快速掌握鸿蒙应用开发

    《HarmonyOS第一课》焕新升级,赋能开发者快速掌握鸿蒙应用开发 随着HarmonyOS NEXT发布,鸿蒙生态日益壮大,广大开发者对于
    发表于 01-02 14:24

    鸿蒙机器人与鸿蒙开发板联动演示

    鸿蒙机器人与鸿蒙开发板联动演示,机器人的角色为迎宾机器人,开发板负责人宾客出现监听
    发表于 12-02 14:55

    鸿蒙原生开发手记:01-元服务开发

    简介 元服务是鸿蒙中的一种轻量应用形态,无需下载,直接运行。类似于微信小程序,但与小程序不同的是,元服务更加轻量。 元服务使用原生开发,是系统级提供的,无论从易用性、性能、体验上,都要比小程序好
    发表于 11-14 17:28

    鸿蒙Flutter实战:07混合开发

    # 鸿蒙Flutter实战:混合开发 鸿蒙Flutter混合开发主要有两种形式。 ## 1.基于har 将flutter module打包成har包,在原生
    发表于 10-23 16:00