울트라 HDR 이미지 수정하기

울트라 HDR 이미지 형식은 기기에서 더 밝고 강렬한 색상의 이미지를 표시할 수 있도록 휘도 정보를 인코딩합니다. 앱에서 울트라 HDR 이미지를 수정할 때는 휘도 정보를 보존해야 합니다. 사용자의 기기가 울트라 HDR 이미지를 최대 강도로 표시하는 것을 지원하지 않더라도 이 작업은 중요합니다. 사용자가 울트라 HDR을 지원하는 기기를 가진 사람에게 이미지를 공유하거나, 이미지를 저장한 후 몇 년 후에 새 기기에서 다시 볼 수 있기 때문입니다.

다행히 대부분의 Android 비트맵 수정 메서드는 울트라 HDR 이미지 형식을 지원합니다. 이미지 자르기 또는 회전과 같은 기본 수정을 하는 경우 표준 Android 메서드가 작업을 실행합니다. 그러면 새 크기 또는 방향의 울트라 HDR 이미지가 생성됩니다.

이미지 콘텐츠를 수정하는 경우에는 작업이 더 까다롭습니다. 이러한 경우 표준 수정 메서드는 이전 이미지의 휘도 정보를 보존하므로 원하는 결과가 아닐 수 있습니다. 이러한 경우 게인 맵 (이미지의 휘도 정보를 인코딩함)을 수정하거나 삭제하여 올바른 결과를 얻어야 할 수 있습니다.

울트라 HDR 형식 개요

울트라 HDR 이미지 형식은 Ultra HDR Image 사양에 자세히 설명되어 있습니다. 가장 중요한 점은 울트라 HDR 이미지에 기본 이미지게인 맵 이 모두 포함되어 있다는 것입니다.

  • 기본 이미지 에는 이미지의 각 픽셀에 관한 색상 정보가 있습니다.
  • 게인 맵 은 기본 이미지와 동일한 비율의 표준 JPEG 이미지이지만 픽셀 크기가 동일하지는 않습니다. 게인 맵의 각 픽셀은 기본 이미지의 해당 부분의 휘도를 지정합니다.

게인 맵은 흑백 또는 컬러일 수 있습니다. 게인 맵이 컬러인 경우 게인 맵의 각 색상 채널은 기본 이미지의 해당 부분에 있는 해당 색상 채널의 휘도를 지정합니다. 게인 맵이 흑백인 경우 게인 맵의 각 픽셀은 기본 이미지의 해당 부분에 있는 세 가지 색상 채널의 휘도를 지정합니다.

게인 맵은 기본 이미지와 동일한 비율을 가져야 하지만 픽셀 크기가 동일할 필요는 없습니다. 실제로 Android 플랫폼에서 울트라 HDR 이미지를 만들 때 기본 이미지보다 너비와 높이가 더 작은 게인 맵을 만듭니다. 이렇게 하면 파일 크기가 훨씬 작아지지만 좋은 결과를 얻을 수 있을 만큼 충분한 정보가 인코딩됩니다. 즉, 게인 맵의 각 픽셀은 기본 이미지의 여러 픽셀에 관한 휘도 정보를 저장할 수 있습니다.

기본 울트라 HDR 수정

Android Bitmap API를 사용하여 울트라 HDR 이미지에 기본 변환을 적용하면 메서드가 게인 맵에 적절한 변경사항을 적용합니다. 다음 Bitmap 작업이 지원됩니다.

  • 회전: 울트라 HDR 이미지를 회전하면 메서드도 게인 맵을 회전합니다.
  • 자르기: 울트라 HDR 이미지를 자르면 메서드가 게인 맵을 적절하게 자릅니다.
  • 크기 조정: 울트라 HDR 이미지의 크기를 조정하면 메서드가 게인 맵의 크기를 조정하여 크기가 조정된 기본 이미지의 너비와 높이의 절반이 되도록 합니다.

각 경우에 휘도 정보가 보존됩니다.

고급 울트라 HDR 수정

울트라 HDR 이미지를 더 정교하게 수정하면 게인 맵이 변경되지 않은 상태로 보존되므로 원하는 결과가 나오지 않을 수 있습니다.

이러한 상황을 초래할 수 있는 일반적인 수정사항은 다음과 같습니다.

  • 스티커 또는 이모티콘 추가: 추가된 스티커는 붙여넣은 영역과 동일한 휘도 및 색상 선명도 값을 갖습니다.
  • 두 번째 이미지 오버레이: 새 이미지는 오버레이하는 콘텐츠의 휘도 및 색상 선명도 정보를 사용합니다.
  • 필터 추가: 이전 게인 맵의 정보가 수정된 기본 이미지에 적합하지 않을 수 있습니다.

각 경우에 이전 휘도 및 색상 선명도 정보가 보존되지만 수정된 이미지에 적합하지 않을 수 있습니다.

수정된 이미지에 원래 게인 맵이 적합한 경우 아무것도 하지 않아도 됩니다. 게인 맵을 수정하려면 일반적인 워크플로는 다음과 같습니다.

  1. 이미지의 현재 게인 맵을 가져오고 Bitmap.getGainmap()을 호출하여 캐시합니다.
  2. 원하는 대로 기본 이미지를 수정합니다.
  3. 캐시된 게인 맵에 해당하는 수정사항을 적용합니다. 예를 들어 기본 이미지에 이모티콘을 붙여넣은 경우 게인 맵의 해당 부분을 Color.GRAY와 같은 중립 값으로 설정할 수 있습니다.

  4. 수정된 게인 맵을 이미지에 다시 적용합니다 by calling Bitmap.setGainmap().

추가 리소스

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