通过 Android 和 iOS 快速接入 HDR 实践

2025-12-19   访问量:0


HDR(High Dynamic Range Imaging),高动态范围成像,是一种能够显示更大曝光动态范围的图像,它能保留图像中的更多细节和色彩信息,使图像的明暗差别更明显、色彩更丰富,从而提供更真实和丰富的视觉体验。

数据万象支持在处理 HDR 图片时保留原有的 HDR 信息,使处理后的图片依然能展示出 HDR 效果,详见 HDR 图片处理

HDR 类型介绍

支持在处理时保留的 HDR 类型

支持的图片格式

Ultra HDR:ISO 标准的 GainMap HDR(安卓生态)

JPEG

Apple Adaptive HDR:符合 ISO 标准的苹果定制 GainMap HDR(苹果生态)

HEIF

10 bit 色深 HDR:非增益图实现的原生 HDR

HEIF、AVIF

说明:

HDR 图片为付费服务,与基础图片处理搭配使用时,将产生 HDR 图片处理费用,如果处理结果图为 HEIF/HEIC 或 AVIF,将产生图片高级压缩和 HDR 图片处理两项费用,详细计费说明可参见 图片处理费用

兼容性

安卓从 Android 14(API 级别34)开始提供对 Ultra HDR 图片的原生支持,如果小于 Android 14或者硬件不支持 HDR,图片会自动降级显示为标准的 SDR(标准动态范围)版本。

安卓从 Android 13(API 级别33)开始支持10 bit 色深的 HDR 图片,对于早期硬件不支持 HDR 的设备,系统默认会通过量化降级的方式以8 bit 形态进行展示,不存在兼容性问题。

苹果从 iOS 18开始支持对 Ultra HDR 图片的原生支持,如果 iOS 系统版本小于18,则设备仅能显示遵循苹果协议的 HDR 图片(Apple Adaptive HDR)。此外如果设备硬件不支持 HDR,图片会自动降级显示为 SDR(标准动态范围)版本。

苹果从 iOS 13开始支持10 bit 色深的 HDR 图片,对于早期硬件不支持 HDR 的设备,系统默认会通过动态范围映射的方式以8 bit 形态进行展示,不存在兼容性问题。

显示 HDR 图片代码示例

以当前市场中占比最广泛的 Ultra HDR 为例,完整示例请参见 Android HDR DemoiOS HDR Demo

Android

iOS

1. 调用 Bitmap.hasGainMap()(自 Android 14起可用)检查其是否具有增益映射。

2. 如需以完整动态范围显示 Ultra HDR 图片,请将窗口的颜色模式设置为 ActivityInfo.COLOR_MODE_HDR

更多代码示例,请参考 显示 Ultra HDR 图片

val bitmap = BitmapFactory.decodeFile("HDR.jpg")

imageView.setImageBitmap(bitmap)



// Set color mode of the activity to the correct color mode.

window.colorMode =

  if (bitmap.hasGainmap()) ActivityInfo.COLOR_MODE_HDR else ActivityInfo.COLOR_MODE_DEFAULT




热门文章
更多>