HEIF:更高质量、更小体积,开启HarmonyOS图像新体验
头像 鸿蒙小助手 2025-09-08 16:15:47    发布
21409 浏览 601 点赞 2 收藏

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

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

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

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

·  图像质量持续提高

²  分辨率稳步提升。

²  色深逐渐增加。

²  色域持续拓展。

²  动态范围逐步升级。

·  图像数量爆炸性增长

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

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

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

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

二、HEIF的优势及HarmonyOSHEIF的优化

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

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

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

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

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

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

三、图像处理开发示例

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

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

方式简介:

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

适用场景:

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

核心代码:

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

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

方式简介:

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

适用场景:

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

核心代码:

// 解码得到图像像素数据
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图像。

核心代码:

// 创建ImageSource
let imageSource = image.createImageSource('images/view.heic');
// 创建ImagePacker
const imagePacker = image.createImagePacker();
// HEIF到JPEG的转码,指定编码选项,将图片编码为JPEG
// quality推荐设置为95,保证较好的图片质量的同时,使编码后的图片文件体积更小
// 如果希望保留图片的EXIF信息,必须将needsPackProperties参数指定为true
let 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




©本站发布的所有内容,包括但不限于文字、图片、音频、视频、图表、标志、标识、广告、商标、商号、域名、软件、程序等,除特别标明外,均来源于网络或用户投稿,版权归原作者或原出处所有。我们致力于保护原作者版权,若涉及版权问题,请及时联系我们进行处理。
分类
HarmonyOS
地址:北京市朝阳区北三环东路三元桥曙光西里甲1号第三置业A座1508室 商务内容合作QQ:2291221 电话:13391790444或(010)62178877
版权所有:电脑商情信息服务集团 北京赢邦策略咨询有限责任公司
声明:本媒体部分图片、文章来源于网络,版权归原作者所有,我司致力于保护作者版权,如有侵权,请与我司联系删除
京ICP备:2022009079号-2
京公网安备:11010502051901号
ICP证:京B2-20230255