울트라 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 이미지를 더 정교하게 수정하면 게인 맵이 변경되지 않은 상태로 보존되므로 원하는 결과가 나오지 않을 수 있습니다.
이러한 상황을 초래할 수 있는 일반적인 수정사항은 다음과 같습니다.
- 스티커 또는 이모티콘 추가: 추가된 스티커는 붙여넣은 영역과 동일한 휘도 및 색상 선명도 값을 갖습니다.
- 두 번째 이미지 오버레이: 새 이미지는 오버레이하는 콘텐츠의 휘도 및 색상 선명도 정보를 사용합니다.
- 필터 추가: 이전 게인 맵의 정보가 수정된 기본 이미지에 적합하지 않을 수 있습니다.
각 경우에 이전 휘도 및 색상 선명도 정보가 보존되지만 수정된 이미지에 적합하지 않을 수 있습니다.
수정된 이미지에 원래 게인 맵이 적합한 경우 아무것도 하지 않아도 됩니다. 게인 맵을 수정하려면 일반적인 워크플로는 다음과 같습니다.
- 이미지의 현재 게인 맵을 가져오고
Bitmap.getGainmap()을 호출하여 캐시합니다. - 원하는 대로 기본 이미지를 수정합니다.
캐시된 게인 맵에 해당하는 수정사항을 적용합니다. 예를 들어 기본 이미지에 이모티콘을 붙여넣은 경우 게인 맵의 해당 부분을
Color.GRAY와 같은 중립 값으로 설정할 수 있습니다.수정된 게인 맵을 이미지에 다시 적용합니다 by calling
Bitmap.setGainmap().
추가 리소스
울트라 HDR 이미지에 관해 자세히 알아보려면 다음 추가 리소스를 참고하세요.