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

HarmonyOS7 图片处理:Image 组件与图片选择

文章目录

    • 前言
    • Image 显示本地与网络图
    • 圆角与边框组合
    • 调起相册选图
      • 代码实现
    • 把选中的图显示出来
    • 常见误区(小白必踩)
    • 完整可运行示例:图片选择与显示
      • 核心代码
    • 写在最后

前言

图片是 app 里最常见的内容形态:头像、商品图、用户发的图。HarmonyOS 的Image组件能力很强,从显示、裁剪、圆角到加载网络图都能搞定。

这篇文章分两块:一是Image组件的常用玩法(圆角、缩放、占位),二是怎么调起系统相册选图并拿到本地路径。两块都是日常刚需。

Image 显示本地与网络图

// 显示资源目录图片Image($r('app.media.avatar')).width(80).height(80).borderRadius(40)// 圆形头像.objectFit(ImageFit.Cover)// 显示网络图片Image('https://example.com/p.jpg').width('100%').height(200).objectFit(ImageFit.Cover).alt($r('app.media.placeholder'))// 加载中的占位图

要点:

  • $r('app.media.xxx')引用resources下的图片资源。
  • .borderRadius(40)配正方形尺寸就是圆形头像。
  • .objectFit(ImageFit.Cover):保持比例裁切填充,不会变形(比Contain常用)。
  • .alt(...):网络图加载出来前显示的占位,体验更友好。

网络图权限提醒:用Image加载网络地址,必须在module.json5申请ohos.permission.INTERNET,否则图出不来。

圆角与边框组合

Image($r('app.media.photo')).width(120).height(120).borderRadius(12).border({width:2,color:'#FFFFFF'})// 白边.objectFit(ImageFit.Cover)

白边 + 圆角 + 裁切,是"卡片图片"的标准配方,直接抄。

调起相册选图

选图要用photoAccessHelper(媒体库管理)。核心是先拿权限、再拉起 picker。

代码实现

import{photoAccessHelper}from'@kit.MediaLibraryKit'asyncfunctionpickImage():Promise<string>{try{constcontext=getContext()constph=photoAccessHelper.getPhotoAccessHelper(context)consturi=awaitph.selectUserPhoto(// 调起系统选图photoAccessHelper.PhotoSelectOptions.SINGLE_SELECT)returnuri[0]// 返回选中的图片 URI}catch(e){console.error('选图失败',e)return''}}

  • selectUserPhoto是系统级picker,用户在自己相册里选,不会泄露其他照片。
  • 返回的是图片的URI(统一资源标识),不是文件路径,但它可以直接喂给Image

把选中的图显示出来

@LocalpickedUri:string=''build(){Column(){if(this.pickedUri){Image(this.pickedUri)// 直接用 URI 当 src.width(200).height(200).objectFit(ImageFit.Cover)}Button('选择图片').onClick(async()=>{this.pickedUri=awaitpickImage()})}}

拿到 URI 后直接Image(uri)就能显示,不用自己读写文件,系统已经处理好了权限。

常见误区(小白必踩)

误区说明
网络图没申请INTERNETImage加载网络地址必须在module.json5申权限,否则图出不来还没报错。
objectFit用错导致变形ImageFit.Cover保持比例裁切,Contain会留白,按需选。
选图用文件路径而非 URI系统 picker 返回的是 URI,直接喂给Image即可,别自己去读文件路径。

下面这段代码可以直接复制到 DevEco Studio 里运行。建议你边读边敲,改一改文末「动手改一改」里的参数,亲眼看看效果。

完整可运行示例:图片选择与显示

调用系统 picker 选图,再用 Image 显示。

核心代码

// 拉起系统相册选择一张图并显示import{photoAccessHelper}from'@kit.MediaLibraryKit'import{picker}from'@kit.CoreFileKit'@Entry@Componentstruct PickImg{@Stateuri:string=''build(){Column({space:16}){Button('选择图片').onClick(async()=>{constp=newpicker.PhotoViewPicker()constres=awaitp.select({MIMEType:picker.PhotoViewMimeType.IMAGE})if(res.photoUris.length>0){this.uri=res.photoUris[0]// 拿到图片 URI}})if(this.uri){Image(this.uri).width(200).height(200).objectFit(ImageFit.Cover)}}.padding(20)}}

你会看到什么:点按钮拉起系统相册,选一张图后,它显示在下方 200×200 的方框里。

动手改一改

  • objectFit(ImageFit.Cover)改成ImageFit.Contain,看缩放差异。
  • 多选:把selectmaxSelectNumber设为 3,循环显示多张。
  • 给 Image 加.borderRadius(12),做出圆角头像效果。

写在最后

图片处理就两块:显示侧Image的圆角/裁切/占位三件套;选择侧photoAccessHelperselectUserPhoto拿 URI。两者配合,头像上传、发图、商品图编辑都能做。

提醒:涉及相册读取,除了INTERNET,选图本身走系统 picker 一般不需额外权限,但如果你要保存图片到自己沙箱,记得申请媒体库写入权限。先把"选图→显示"跑通,再考虑保存。

http://www.jsqmd.com/news/1177465/

相关文章:

  • 后端开发入门路线:从零搭建第一个API服务
  • QEMU 模拟 ARM 虚拟机性能实测:银河麒麟 V10 在 8 核 i7 上的 IOPS 与启动耗时分析
  • 丙午年五月廿九窗里声
  • STM32F745ZG与MCP3551高精度ADC硬件设计与SPI配置
  • GPT-5.6 发布:Sol / Terra / Luna 三款模型怎么选?
  • Windows服务器的智能安全守护者:Wail2Ban如何自动化防御暴力破解
  • UNIX 网络编程 30 种服务器模型对比:从迭代到预线程,性能与复杂度分析
  • 2026最新南平本地漏水检测公司本地精选权威推荐:正规防水补漏公司优选口碑TOP5:卫生间/厨房/阳台/飘窗/地下室渗漏水维修师傅上门 - 即刻修防水
  • 小皮面板wordpress本地更新插件失败的原因和解决方法
  • OpenRefine 3.8.2 对比 Excel:3类数据清洗场景效率实测
  • 出海赞比亚商贸数字化复盘:内陆跨境进销存、多仓分流与矿企工程供货落地实践
  • STM32L496ZG开发板与直流电机控制实战指南
  • HD Tune Pro 6.10 实战:3个关键S.M.A.R.T.值快速鉴别二手硬盘翻新
  • AI Coding 系列(三):把复杂需求拆成 AI 能可靠完成的小任务
  • MP2672A双节锂电池主动均衡方案设计与优化
  • AI Coding 系列(一):把 AI 当作结对程序员——从需求到可验证代码的工作流
  • Kibana Dev Tools 3 大功能实战:Console 查询、Search Profiler 与 Grok 调试
  • Python自动化处理视频字幕与时间轴的技术实践
  • 167.直接复制运行!CODESYS/TIA 通用三色分拣 ST 源码|软件防抖 FB + 三状态机 + 推杆时序精准控制
  • 揭秘3大核心技术:实现《原神》《星穹铁道》帧率突破的终极方案
  • 2026年7月最新重庆美度官方售后维修服务网点地址与客服电话 - 亨得利钟表维修中心
  • Windows窗口置顶终极指南:AlwaysOnTop让你的工作流程效率翻倍
  • 【提示词6要素之02任务】你说清楚要干什么了吗?
  • anthropics-skills | 16 - 团队落地:Skill 的版本管理、分发、安全与治理
  • Bigtop Manager架构揭秘:Web UI与Agent协同工作的底层原理
  • 从产品结构看恩坦斯特有哪些系列和型号?精密传动产品分类解析
  • AI视频生成实战:从剧本到4K足球短片的端到端流程解析
  • 76.1.智能浇灌系统-基于STM32单片机物联网设计【硬件+APP+云平台】
  • NBM7100A与PIC32MX664F064L的电池优化方案
  • 2026年7月最新温州真力时官方售后联系电话与客户服务中心网点地址 - 亨得利官方服务中心