Cómo editar imágenes Ultra HDR

El formato de imagen Ultra HDR codifica 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, debes asegurarte de preservar esa información de luminosidad. Esto es importante incluso si el dispositivo del usuario no admite que se muestre una imagen Ultra HDR a máxima intensidad. Después de todo, el usuario podría compartir su imagen con alguien con un dispositivo compatible con Ultra HDR o podría guardar esa imagen y volver a verla en un dispositivo nuevo años después.

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 girarla, los métodos estándar de Android hacen el trabajo. Tendrás una imagen ultra HDR con las dimensiones o la orientación nuevas.

La tarea es más complicada si modificas 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 antigua, lo que podría no ser lo que deseas. 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 imágenes Ultra HDR. Lo más importante que debes comprender es que una imagen Ultra HDR contiene una imagen principal y un mapa de ganancia.

  • La imagen principal tiene la información de color de 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 con las mismas dimensiones de píxeles. Cada píxel del mapa de ganancia especifica la luminancia de la parte correspondiente de la imagen principal.

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

El mapa de ganancia debe tener las mismas proporciones que la imagen principal, pero no tiene que tener las mismas dimensiones en píxeles. De hecho, cuando la plataforma de Android crea imágenes Ultra HDR, crea un mapa de ganancia con un ancho y una altura más pequeños que la imagen principal. De esta manera, el tamaño del archivo se reduce significativamente, pero aún codifica suficiente información para obtener un buen resultado. Esto significa que cada píxel del mapa de ganancia podría 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 adecuados en el mapa de ganancia. Se admiten las siguientes operaciones de Bitmap:

  • Rotación: Si rotas una imagen Ultra HDR, el método también rota el mapa de ganancia.
  • Recorte: Si recortas una imagen Ultra HDR, el método recorta el mapa de ganancia de manera adecuada.
  • Scale: Si escalas una imagen Ultra HDR, el método ajusta el mapa de ganancia para que tenga la mitad del ancho y la mitad de la altura 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 Ultra HDR

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

Entre los cambios comunes que pueden generar esta situación, se incluyen los 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ía la información de luminosidad y viveza del color del contenido que se superpone.
  • Agrega filtros: Es posible que la información del mapa de ganancia anterior no sea apropiada para la imagen principal modificada.

En cada caso, se conserva la información anterior de luminosidad y viveza del color, pero es posible que no sea adecuada para la imagen modificada.

Si el mapa de ganancia original es apropiado para la imagen editada, no tienes que hacer nada. Si quieres modificar el mapa de ganancias, el flujo de trabajo habitual es el siguiente:

  1. Para recuperar el mapa de ganancia actual de la imagen, llama a Bitmap.getGainmap() y guárdalo 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 ganancia en un valor neutro, como Color.GRAY.

  4. Vuelve a aplicar el mapa de ganancia 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: