编辑 Ultra HDR 图片

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 图片进行了更细致的修改,增益图会保持不变,但可能无法获得您想要的结果。

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

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

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

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

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

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

其他资源

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