Ultra HDR 图片格式会编码亮度信息,让设备能够显示色彩更鲜艳的亮度更高的图片。当应用修改 Ultra HDR 图片时,您需要确保保留该亮度信息。即使用户的设备不支持以全亮度显示 Ultra HDR 图片,这一点也非常重要。毕竟,用户可能会与使用支持 Ultra HDR 的设备的其他人分享图片,或者他们可能会保存该图片,并在几年后在新设备上再次查看。
好消息是,大多数用于编辑位图的 Android 方法都支持 Ultra HDR 图片格式。如果您要对图片进行基本编辑(例如剪裁或旋转),可以使用标准 Android 方法来完成 - 最终您将获得具有新尺寸或方向的超 HDR 图片。
如果您要修改图片的内容,则工作会更为棘手。在这些情况下,标准编辑方法会保留旧图片的亮度信息,这可能不是您想要的。在这些情况下,您可能需要修改或移除增益映射(用于编码图片的亮度信息),才能获得正确的结果。
Ultra HDR 格式概览
Ultra HDR 图片规范详细介绍了 Ultra HDR 图片格式。最重要的是要了解,Ultra HDR 图片同时包含主图片和增益映射。
- 主图片包含图片每个像素的颜色信息。
- 增益映射是一种标准 JPEG 图片,其宽高比与主图片相同,但像素尺寸不一定相同。增益图的每个像素都指定了主图像相应部分的亮度。
增益图可以是灰度模式,也可以是彩色。如果增益图是彩色的,增益图上的每个颜色通道都会指定主要图像相应部分该颜色通道的亮度。如果增益映射是灰度图像,则增益映射的每个像素都指定主图像相应部分的三个颜色通道的亮度。
增益映射的比例必须与主图像相同,但像素尺寸不必相同。事实上,当 Android 平台创建 Ultra HDR 图片时,它会创建宽度和高度小于主图片的增益映射;这样做可以显著缩小文件大小,但仍会编码足够的信息以获得良好的结果。这意味着增益图中的每个像素都可能会存储主图像中多个像素的亮度信息。
基本 Ultra HDR 编辑
如果您使用 Android Bitmap
API 对 Ultra HDR 图片进行基本转换,这些方法会对增益映射进行适当更改。支持以下 Bitmap
操作:
- 旋转:如果您旋转 Ultra HDR 图片,该方法也会旋转增益映射。
- 剪裁:如果您剪裁 Ultra HDR 图片,该方法会相应地剪裁增益映射。
- 缩放:如果您缩放 Ultra HDR 图片,该方法会缩放增益映射,使其宽度和高度均为调整大小的主图片的一半。
在每种情况下,系统都会保留亮度信息。
高级 Ultra HDR 编辑
如果您对 Ultra HDR 图片进行更精细的编辑,增益图会保持不变,这可能不会给您带来想要的结果。
可能导致这种情况的常见修改包括:
- 添加贴纸或表情符号:添加的贴纸的亮度和色彩鲜艳度值与其粘贴到的区域相同。
- 叠加第二张图片:新图片将使用其所叠加内容的亮度和色彩鲜明度信息。
- 添加滤镜:旧增益图的信息可能不适用于经过修改的主图像。
在每种情况下,系统都会保留旧的亮度和色彩鲜明度信息,但可能不适合修改后的图片。
如果原始增益映射适用于经过编辑的图片,您无需执行任何操作。如果您确实要修改增益映射,通常的工作流程如下:
- 通过调用
Bitmap.getGainmap()
提取图片的当前增益映射并将其缓存起来。 - 根据需要修改主图片。
对缓存的增益映射进行相应修改。例如,如果您将表情符号粘贴到主要图片上,则可以将增益映射的相应部分设置为中性值,如
Color.GRAY
。通过调用
Bitmap.setGainmap()
,将修改后的增益映射应用回图像。
其他资源
如需详细了解 Ultra HDR 图片,请参阅下面列出的其他资源: