울트라 HDR 이미지 표시

울트라 HDR 이미지 형식을 사용하면 이미지에 빛의 강도에 관한 더 많은 정보를 저장할 수 있으므로 더 자세한 하이라이트와 그림자, 더 선명한 색상을 얻을 수 있습니다. Android는 Android 14 (API 수준 34)부터 울트라 HDR 이미지를 지원합니다. 앱이 이러한 버전에서 실행 중인 경우 이러한 이미지를 올바르게 표시하도록 앱을 구성하는 것이 중요합니다. 반면 앱에서 울트라 HDR 이미지를 표시하지 않는다면 울트라 HDR 디스플레이를 사용 설정하지 않음으로써 기기 리소스를 절약할 수 있습니다. 이 페이지에서는 그래픽이 울트라 HDR을 지원하는지 확인하고 이를 올바르게 표시하는 방법을 설명합니다.

표준 다이내믹 레인지와 HDR(High Dynamic Range) 간의 차이를 시뮬레이션하는 그래픽 하늘이 흐린 풍경을 보여주는 그래픽 HDR을 시뮬레이션하는 오른쪽 절반에는 더 밝은 하이라이트, 더 어두운 그림자, 더 선명한 색상이 적용되었습니다.
그림 1. SDR (Standard Dynamic Range) 및 HDR (High Dynamic Range) 이미지 간의 차이를 시뮬레이션합니다. 기기가 HDR을 지원하면 이미지의 그림자와 밝은톤이 더 밝을 수 있습니다.

게인 맵이 있는지 확인

울트라 HDR 이미지에는 게인 맵이 포함됩니다. 게인 맵은 이미지에 있는 각 픽셀의 밝기 증가를 결정하는 데 사용됩니다. 이미지가 울트라 HDR 형식인지 확인하려면 이미지 또는 드로어블을 Bitmap로 변환하고 Bitmap.hasGainMap()(Android 14부터 사용 가능)를 호출하여 게인 맵이 있는지 확인합니다.

울트라 HDR을 표시하도록 창 구성

풀 다이내믹 레인지에 울트라 HDR 이미지를 표시하려면 창의 색상 모드를 ActivityInfo.COLOR_MODE_HDR로 설정하세요. 이렇게 하려면 창의 setColorMode() 메서드를 호출하면 됩니다. (이러한 API는 Android 8부터 사용할 수 있지만, 기기에서 Android 14 이상을 실행하지 않으면 울트라 HDR로 이미지가 표시되지 않습니다.)

종합적으로 살펴보기

다음 코드는 전체 프로세스가 어떻게 표시되는지 보여줍니다. 이 코드는 이미지가 비트맵에 로드되었다고 가정하고 이미지에 게인 맵이 있는지 확인합니다. 지원하는 경우 코드는 창의 색상 모드를 COLOR_MODE_HDR로 전환합니다. 이미지에 게인 맵이 없으면 코드는 창을 기본 색상 모드로 전환합니다.

Kotlin

val bitmap = /* Get Bitmap from Image Resource */
binding.imageContainer.setImageBitmap(bitmap)

// Set color mode of the activity to the correct color mode.
requireActivity().window.colorMode =
   if (bitmap.hasGainmap()) ActivityInfo.COLOR_MODE_HDR else ActivityInfo.COLOR_MODE_DEFAULT

Java

final Bitmap bitmap = /* Get Bitmap from Image Resource */
binding.imageContainer.setImageBitmap(bitmap);

// Set color mode of the activity to the correct color mode.
int colorMode = ActivityInfo.COLOR_MODE_DEFAULT;
if (bitmap.hasGainmap()) colorMode = ActivityInfo.COLOR_MODE_HDR;
requireActivity().getWindow().setColorMode(colorMode);

추가 리소스

울트라 HDR 이미지에 관해 자세히 알아보려면 다음 추가 리소스를 참고하세요.