编辑 Ultra HDR 图片

Ultra HDR 图片格式可对亮度信息进行编码,让设备能够显示更明亮的图片,呈现更浓郁的色彩。当您的应用编辑 Ultra HDR 图片时,您需要确保保留该亮度信息。即使用户的设备不支持以全强度显示 Ultra HDR 图片,这一点也很重要。毕竟,用户可能会将图片分享给使用支持 Ultra HDR 的设备的人,或者可能会保存该图片并在几年后在新设备上再次查看。

好消息是,大多数用于编辑位图的 Android 方法都支持 Ultra HDR 图片格式。如果您要对图片进行基本编辑(例如剪裁或旋转),可以使用标准的 Android 方法完成此任务,最终会得到具有新尺寸或方向的 Ultra 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 图片进行更精细的编辑,增益映射会保持不变,这可能无法让您获得理想的效果。

可能导致此情况的常见修改包括:

  • 添加贴纸或表情符号:添加的贴纸将具有与粘贴区域相同的亮度和色彩鲜艳度值。
  • 叠加第二张图片:新图片将使用其叠加的内容的亮度和色彩鲜艳度信息。
  • 添加滤镜:旧增益图的信息可能不适合修改后的主图片。

在每种情况下,旧的亮度和色彩鲜艳度信息都会保留,但可能不适合修改后的图片。

如果原始增益图适合编辑后的图片,您无需执行任何操作。如果您确实要修改增益图,通常的工作流程如下:

  1. 通过调用 Bitmap.getGainmap() 提取映像的当前增益图并将其缓存。
  2. 根据需要修改主图片。
  3. 对缓存的增益地图进行相应的修改。例如,如果您将表情符号粘贴到主图片上,则可以将增益映射的相应部分设置为中性值,例如 Color.GRAY

  4. 通过调用 Bitmap.setGainmap()将修改后的增益图应用回图像

其他资源

如需详细了解 Ultra HDR 图片,请参阅下面列出的其他资源: