编辑 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 图片,请参阅下面列出的其他资源: