Cómo editar imágenes Ultra HDR

El formato de imagen Ultra HDR codifica la información de luminosidad que permite que los dispositivos muestren imágenes más brillantes con colores más intensos. Cuando tu app edita una imagen Ultra HDR, asegúrate de conservar la información de luminosidad. Esto es importante incluso si el dispositivo del usuario no admite la visualización de una imagen Ultra HDR en máxima intensidad. Después de todo, el usuario podría compartir su imagen con alguien a través de un dispositivo compatible con Ultra HDR o guardar esa imagen y volver a verla en un dispositivo nuevo años más tarde.

La buena noticia es que la mayoría de los métodos de Android para editar mapas de bits admiten el formato de imagen Ultra HDR. Si realizas ediciones básicas en una imagen, como recortarla o rotarla, los métodos estándar de Android hacen el trabajo: obtendrás una imagen ultra HDR con las nuevas dimensiones o la nueva orientación.

El trabajo es más complicado si se modifica el contenido de la imagen. En esos casos, los métodos de edición estándar conservan la información de luminosidad de la imagen anterior, que podría no ser la que quieres. En esos casos, es posible que debas editar o quitar el mapa de ganancia (que codifica la información de luminosidad de la imagen) para obtener el resultado correcto.

Descripción general del formato Ultra HDR

El formato de imagen Ultra HDR se describe en detalle en la especificación de imagen Ultra HDR. Lo más importante que debes comprender es que una imagen Ultra HDR contiene una imagen principal y un mapa de ganancias.

  • La imagen principal tiene la información de color para cada píxel de la imagen.
  • El mapa de ganancia es una imagen JPEG estándar con las mismas proporciones que la imagen principal, aunque no necesariamente las mismas dimensiones de píxeles. Cada píxel del mapa de ganancias especifica la luminancia de la parte correspondiente de la imagen principal.

El mapa de ganancias puede ser de escala de grises o de color. Si el mapa de ganancias está en color, cada canal de color especifica la luminancia de ese canal de color en la parte correspondiente de la imagen principal. Si el mapa de ganancias es en escala de grises, cada píxel del mapa de ganancias especifica la luminancia de los tres canales de color en esa parte de la imagen principal.

El mapa de ganancias debe tener las mismas proporciones que la imagen principal, pero no es necesario que tenga las mismas dimensiones de píxeles. De hecho, cuando la plataforma de Android crea imágenes Ultra HDR, crea un mapa de ganancias con un ancho y una altura menores que la imagen principal. De esta manera, el tamaño del archivo se reduce considerablemente, pero se codifica suficiente información para generar un buen resultado. Esto significa que cada píxel en el mapa de ganancia puede almacenar la información de luminancia de varios píxeles en la imagen principal.

Ediciones básicas de Ultra HDR

Si usas las APIs de Bitmap de Android para realizar transformaciones básicas en una imagen Ultra HDR, los métodos realizan los cambios apropiados para el mapa de ganancia. Se admiten las siguientes operaciones de Bitmap:

  • Rotar: Si rotas una imagen en Ultra HDR, el método también rotará el mapa de ganancias.
  • Recortar: Si recortas una imagen Ultra HDR, el método recorta el mapa de ganancia de manera adecuada.
  • Scale: Si ajustas la escala de una imagen Ultra HDR, el método ajusta el mapa de ganancias para que tenga la mitad del ancho y la mitad del alto de la imagen principal a la que se le cambió el tamaño.

En cada caso, se conserva la información de luminosidad.

Ediciones avanzadas de Ultra HDR

Si realizas ediciones más complejas en una imagen Ultra HDR, el mapa de ganancia se conserva sin cambios, lo que podría no brindarte los resultados que deseas.

Entre las ediciones comunes que podrían dar lugar a esta situación, se incluyen las siguientes:

  • Agregar calcomanías o emojis: La calcomanía agregada tendría los mismos valores de luminosidad y intensidad de color que el área en la que se pegó.
  • Superposición de una segunda imagen: La imagen nueva usará la información de luminosidad e intensidad de color del contenido sobre el que se superpone.
  • Agrega filtros: la información del mapa de ganancias anterior podría no ser apropiada para la imagen principal modificada.

En cada caso, se conserva la información anterior de luminosidad y intensidad de color, pero podría no ser apropiada para la imagen modificada.

Si el mapa de ganancias original es apropiado para la imagen editada, no es necesario que realices ninguna acción. Si deseas modificar el mapa de ganancias, el flujo de trabajo habitual es el siguiente:

  1. Recupera el mapa de ganancia actual de la imagen llamando a Bitmap.getGainmap() y almacénalo en caché.
  2. Modifica la imagen principal como desees.
  3. Realiza las ediciones correspondientes en el mapa de ganancias almacenado en caché. Por ejemplo, si pegaste un emoji en la imagen principal, puedes establecer la parte correspondiente del mapa de ganancias en un valor neutro, como Color.GRAY.

  4. Aplica el mapa de ganancias modificado a la imagen llamando a Bitmap.setGainmap().

Recursos adicionales

Para obtener más información sobre las imágenes Ultra HDR, consulta los siguientes recursos adicionales: