Ultra HDR 图片格式对亮度信息进行编码,使设备能够显示具有更强烈色彩的更明亮的图片。当应用修改 Ultra HDR 图片时,您需要确保保留该亮度信息。即使用户的设备不支持以全强度显示 Ultra HDR 图片,这一点也很重要。毕竟,用户可能会将图片分享给使用支持 Ultra HDR 的设备的用户,也可能会保存该图片,并在几年后在新设备上再次查看。
好消息是,大多数 Android 位图修改方法都支持 Ultra HDR 图片格式。如果您要对图片进行基本修改(例如剪裁或旋转),可以使用标准的 Android 方法 - 您最终会获得具有新尺寸或方向的 Ultra HDR 图片。
如果您要修改图片的内容,这项作业会更加棘手。在这些情况下,标准的修改方法会保留旧图片的亮度信息,这可能不是您想要的信息。在这些情况下,您可能需要修改或移除增益图(它会对图片的亮度信息进行编码)才能获得正确的结果。
Ultra HDR 格式概览
Ultra HDR 图片规范中详细介绍了 Ultra HDR 图片格式。最重要的是,超 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 图片,请参阅下面列出的其他资源: