10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

HEIF:更高质量、更小体积,开启 HarmonyOS 图像新体验

  • 2025-09-08
    北京
  • 本文字数:2329 字

    阅读完需:约 8 分钟

大小:895.47K时长:05:05

一、图像发展大趋势及 HarmonyOS 图像格式支持策略

自数字图像诞生以来,图像格式经历了多轮更新迭代。从早期的 BMP、TIFF 等无压缩或轻压缩格式,到后来广泛应用的 JPEG、PNG、GIF 等主流格式,图像编码技术不断演进,其核心目标始终是——在有限的存储空间与带宽条件下,实现更高质量、更高效率的图像呈现。


在 PC 时代,JPEG 和 PNG 分别作为有损压缩与无损压缩的代表,几乎覆盖了绝大多数图像使用场景。但随着数字图像设备的普及和互联网的飞速发展,传统图像格式的局限性日益凸显,催生出新一代图像格式的需求。


 

现代图像数据呈现出两大显著趋势:

  1. 图像质量持续提高

  • 分辨率稳步提升。

  • 色深逐渐增加。

  • 色域持续拓展。

  • 动态范围逐步升级。


 

  1. 图像数量爆炸性增长

  • 社交媒体、即时通讯、在线购物等应用推动个人日均拍摄图像数大幅提升。

  • 图像成为 AI、视觉识别等领域的重要数据源。

 

在当今时代,人人皆为“影像内容生产者”,海量的照片与视频对图像的存储、传输和展示提出了更高的要求。HarmonyOS 从系统层面持续强化图像处理能力,优先支持主流图像格式,并对实际应用中具备显著优势的格式着重进行优化。


目前,HarmonyOS 已支持 GIF、JPEG、PNG、WebP、HEIF、BMP 等主流图像格式的解码与显示,支持将图像编码为 JPEG、PNG、HEIF、WebP、GIF 等格式。对 TIFF 格式和 RAW 格式预览图的解码支持即将上线。更多格式的支持也正在规划推进中。

二、HEIF 的优势及 HarmonyOS 对 HEIF 的优化

HEIF(High Efficiency Image File Format)作为新一代高效图像格式,凭借优异的压缩性能和丰富的编码特性,为数字影像带来了全新的体验。此外,自发布以来的近十年实践中,HEIF 已充分证明其稳定性与成熟度,逐步取代传统格式成为未来图像技术的重要选择。


HEIF 基于 HEVC(H.265)视频压缩标准,具备显著的技术优势:

  • 更高压缩效率:在相同画质下,相比于 JPEG、WEBP 等传统格式,可节省 50%以上的存储空间。

  • 支持 HDR 和高色深:天然支持 10bit 色深、HDR 显示,更适配现代高性能显示设备。

  • 可扩展性强:支持存储增益图 Gain Map、深度图 Depth Map 等辅助图像,适用于 HDR、景深重建等高级图像处理场景。

 

自 HarmonyOS 5.0 起,对 HEIF 图像的支持已实现全面升级。系统底层架构进行了优化,结合软硬协同的解码方案,大幅提升了解码效率与运行性能。HarmonyOS 5.x 相比于 HarmonyOS 4.x,HEIF 解码性能提升 60%以上,为用户带来更快速、更流畅、更高质量的图像体验。同时,系统也支持 HEIF 硬件编码,能够快速得到 HEIF 图片。


 

三、图像处理开发示例

HarmonyOS 的 Image 组件和 Image Kit 提供了通用的图像处理 API,无需针对 HEIF 作特殊处理,编程方式与使用 JPEG、PNG 等图源一致。下面针对开发者基于系统能力进行图像处理开发时,可能采取的两种方式进行介绍。

 

方式 1:直接使用 ArkUI 提供的 Image 组件进行显示


 

方式简介:

Image 组件提供了通用的图像显示能力,解码、渲染等流程均由系统完成,支持显示 BMP、SVG、GIF、PNG、JPEG、HEIF 等多种图像格式,开发者只需要将图像资源传递给 Image 组件即可实现显示效果。


适用场景:

如果开发者仅期望展示图像,不需要额外加工处理,推荐使用这种方式实现。


核心代码:

// 创建Image组件,直接传入图片文件路径,用于显示build() {  Column() {Image('images/view.heic');  }}
复制代码


方式 2:使用 Image Kit 解码得到图像像素数据,进一步处理后,再使用 Image 组件渲染显示。


 

方式简介:

Image Kit 提供了高效的图像解码能力,同样支持显示 PNG、JPEG、BMP、SVG、GIF、HEIF 等多种图像格式,还支持指定图像尺寸、解码区域、动态范围等参数选项,能够满足更多场景下的定制化需求。


适用场景:

如果开发者不希望直接展示原图,而是需要对图像进行一定的后处理,推荐使用这种方式实现。


核心代码:

// 解码得到图像像素数据imageSource = image.createImageSource('images/view.heic');let decodingOptions : image.DecodingOptions = {editable: true,desiredPixelFormat: image.PixelMapFormat.RGBA_8888,};pixelMap = imageSource.createPixelMapSync(decodingOptions);// 对图像进行后处理:调用PixelMap的方法,或自行实现对图像像素数据的处理// 这里以将图像顺时针旋转90度为例pixelMap. rotate(90);// 创建Image组件,传入处理后的PixelMap,用于显示build() {  Column() {Image(pixelMap);  }}
复制代码

四、HEIF 图像转码方法

考虑到在部分场景下,应用可能仍然希望使用 JPEG 图像,这里也给出将 HEIF 图像转码成 JPEG 图像的方法。


 

基于 HarmonyOS Image Kit 的图像解码和图像编码能力,只需几行代码即可将 HEIF 图像转码成 JPEG 图像。


核心代码:

// 创建ImageSourcelet imageSource = image.createImageSource('images/view.heic');// 创建ImagePackerconst imagePacker = image.createImagePacker();// HEIF到JPEG的转码,指定编码选项,将图片编码为JPEG// quality推荐设置为95,保证较好的图片质量的同时,使编码后的图片文件体积更小// 如果希望保留图片的EXIF信息,必须将needsPackProperties参数指定为truelet packOptions: image.PackingOption = {format: “image/jpeg” ,quality: 95,needsPackProperties: true,};await imagePacker.packToFile(imageSource, file.fd, packOptions);// 使用完成后,释放编码器和图像源imagePacker.release();imageSource.release();
复制代码


了解更多鸿蒙 HEIF 图像开发指导,请访问 HarmonyOS 官网:

1. 如何处理 HEIF 图片:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/heif-adapter-faq

2. Image Kit 开发指南:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/image-kit

3. Image Kit API 参考:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references/image-api

 

2025-09-08 16:16698

评论

发布
暂无评论

你的 SQL 还在回表查询吗?快给它安排上覆盖索引

Java MySQL 数据库 后端

华为云GaussDB首次亮相2021服贸会,为数字人民币提供坚实数据底座

华为云数据库小助手

金融科技 数字经济 GaussDB 华为云数据库

在同一台计算机中运行多个MySQL服务

Java 数据库 后端 msyql

狂刷《Java权威面试指南(阿里版)》,冲击“金九银十”有望了

Java 编程 架构 面试 程序人生

为什么UI自动化难做?—— 关于Selenium UI自动化的思考

LigaAI

测试 UI自动化

TDSQL:深度剖析数据库国产化迁移之路

腾讯云数据库

数据库 tdsql

架构训练营 模块一

Leach Sun

微信或推出聊天记录云备份付费服务,你的微信记录值多少钱?

郑州埃文科技

云服务 微信聊天 数据风险管理

springboot项目集成docker

try catch

Docker Dockerfile springboot

安卓工控主板双网口有什么用途?

双赞工控

安卓主板 工控主板

“小巨人”的转型烦恼,百度智能云能否解压?

百度开发者中心

人工智能 企业资讯 中小企业

EMQ 映云科技与 RT-Thread 达成战略合作,共建产业物联网平台

EMQ映云科技

人工智能 云计算 大数据 物联网 emq

论亚马逊QLDB与腾讯TDSQL对历史数据的管理和计算

腾讯云数据库

数据库 tdsql

令我入职阿里的750页微服务架构深度解析文档有何神秘之处?

Java 编程 架构 面试 架构师

TDSQL:关于未来,数据库大咖们都聊了什么?

腾讯云数据库

数据库 tdsql

高性能利器:CDN我建议你好好学一下!

九灵

Java 分布式 微服务 CDN

2021云计算白皮书发布,腾讯云原生数据库TDSQL-C助力共建云上技术生态

腾讯云数据库

数据库 tdsql

浅析 DDD 领域驱动设计

牧小农

DDD 领域驱动

把工作讲给家人听

FunTester

读书笔记 FunTester 奈非文化手册 办公效率 居家工作

腾讯云 TDSQL 审计原理揭秘

腾讯云数据库

数据库 tdsql

揭秘TDSQL-A:兼容Oracle的同时支持海量数据交互

腾讯云数据库

数据库 tdsql

Android技术分享| 开源Demo any自习室布局架构

anyRTC开发者

音视频 移动开发 在线自习室 Android技术分享

如何在MacOS上无缝切换Win11和MacOS?

Zhendong

MacBook m1 Parallels

「技术点串烧」☕【Java 技术指南】「难点-核心-遗漏」Java线程状态流转及生命周期的技术指南!

码界西柚

Java 线程 Thread 9月日更

一文读懂数据库最新技术趋势:TDSQL带你深度纵览VLDB 2019

腾讯云数据库

数据库

腾讯云数据库TDSQL两篇论文入选数据库顶会SIGMOD,产学研结合助力国产数据库生态建设

腾讯云数据库

数据库 tdsql

TDSQL:从自主可控金融级数据库看腾讯“智能+”技术中台之路

腾讯云数据库

数据库 tdsql

精品!阿里P7爆款《K8s+Jenkins》技术笔记,高质量干货必收藏

Java 程序员 架构 面试 k8s

为数据赋能:腾讯TDSQL分布式金融级数据库前沿技术 - 云+社区 - 腾讯云

腾讯云数据库

数据库 tdsql

打爆怪兽 一起来养猪 养蜂人 幸福饭店

游戏开发_软件开发

软件 App 开发 游戏 语音合成

低代码的5个误区,你踩雷了吗?

禅道项目管理

低代码 开发

HEIF:更高质量、更小体积,开启HarmonyOS图像新体验_HarmonyOS_HarmonyOS_InfoQ精选文章