울트라 HDR 이미지 형식은 기기에서 더 강렬한 색상으로 더 밝은 이미지를 표시할 수 있는 휘도 정보를 인코딩합니다. 앱에서 Ultra HDR 이미지를 편집할 때는 휘도 정보를 유지해야 합니다. 이는 사용자의 기기에서 최대 강도로 울트라 HDR 이미지를 표시하지 못하는 경우에도 중요합니다. 결국 사용자는 울트라 HDR을 지원하는 기기를 사용하는 사람에게 이미지를 공유하거나 이미지를 저장한 후 몇 년 후에 새 기기에서 다시 볼 수 있습니다.
다행히도 비트맵을 수정하는 대부분의 Android 메서드는 울트라 HDR 이미지 형식을 지원합니다. 이미지를 자르거나 회전하는 등 기본적인 수정을 하는 경우 표준 Android 메서드를 사용하면 됩니다. 그러면 새로운 크기나 방향의 Ultra HDR 이미지가 생성됩니다.
이미지 내용을 수정하는 경우 작업이 더 까다로워집니다. 이 경우 표준 편집 방법을 사용하면 이전 이미지의 밝기 정보가 유지되므로 원하는 결과가 아닐 수 있습니다. 이러한 경우 올바른 결과를 얻으려면 게인 맵 (이미지의 밝기 정보를 인코딩함)을 수정하거나 삭제해야 할 수 있습니다.
울트라 HDR 형식 개요
울트라 HDR 이미지 형식은 울트라 HDR 이미지 사양에 자세히 설명되어 있습니다. 가장 중요한 점은 울트라 HDR 이미지에 기본 이미지와 게인 맵이 모두 포함된다는 것입니다.
- 기본 이미지에는 이미지의 각 픽셀에 대한 색상 정보가 있습니다.
- 게인 맵은 기본 이미지와 비율이 동일한 표준 JPEG 이미지입니다(픽셀 크기는 동일하지 않아도 됨). 게인 맵의 각 픽셀은 기본 이미지의 해당 부분의 휘도를 지정합니다.
게인 맵은 그레이 스케일 또는 컬러일 수 있습니다. 게인 맵이 컬러인 경우 게인 맵의 각 컬러 채널은 기본 이미지의 해당 부분에 있는 해당 컬러 채널의 휘도를 지정합니다. 게인 맵이 그레이스케일인 경우 게인 맵의 각 픽셀은 기본 이미지의 해당 부분에 있는 세 가지 색상 채널의 휘도를 지정합니다.
게인 맵은 기본 이미지와 비율이 동일해야 하지만 픽셀 크기는 동일하지 않아도 됩니다. 실제로 Android 플랫폼에서 Ultra HDR 이미지를 만들 때 기본 이미지보다 너비와 높이가 작은 게인 맵을 만듭니다. 이렇게 하면 파일 크기가 훨씬 작아지지만 좋은 결과를 얻을 수 있는 충분한 정보가 인코딩됩니다. 즉, 게인 맵의 각 픽셀은 기본 이미지의 여러 픽셀에 대한 휘도 정보를 저장할 수 있습니다.
기본 울트라 HDR 편집
Android Bitmap
API를 사용하여 울트라 HDR 이미지를 기본적으로 변환하면 메서드가 게인 맵을 적절하게 변경합니다. 다음 Bitmap
작업이 지원됩니다.
- 회전: 울트라 HDR 이미지를 회전하면 게인 맵도 회전됩니다.
- 자르기: 울트라 HDR 이미지를 자르면 이 메서드는 게인 맵을 적절하게 자릅니다.
- 크기 조절: 울트라 HDR 이미지의 크기를 조절하면 메서드는 크기가 조절된 기본 이미지의 너비와 높이가 절반인 게인 맵의 크기를 조절합니다.
각 경우에 휘도 정보는 유지됩니다.
고급 울트라 HDR 편집
울트라 HDR 이미지를 더 정교하게 수정하면 게인 맵이 변경되지 않고 유지되므로 원하는 결과가 나오지 않을 수 있습니다.
이러한 상황을 초래할 수 있는 일반적인 수정사항은 다음과 같습니다.
- 스티커 또는 그림 이모티콘 추가: 추가된 스티커의 밝기와 색상 선명도 값이 스티커가 붙여진 영역과 동일합니다.
- 두 번째 이미지 오버레이: 새 이미지는 오버레이되는 콘텐츠의 광도 및 색상 선명도 정보를 사용합니다.
- 필터 추가: 수정된 기본 이미지에 이전 게인 맵의 정보가 적합하지 않을 수 있습니다.
각 경우에 이전 휘도 및 색상 선명도 정보는 보존되지만 수정된 이미지에는 적합하지 않을 수 있습니다.
원본 게인 맵이 수정된 이미지에 적합한 경우 아무 작업도 하지 않아도 됩니다. 게인 맵을 수정하려면 일반적인 워크플로는 다음과 같습니다.
Bitmap.getGainmap()
를 호출하여 이미지의 현재 게인 맵을 가져오고 캐시합니다.- 원하는 대로 기본 이미지를 수정합니다.
캐시된 게인 맵을 적절하게 수정합니다. 예를 들어 기본 이미지에 그림 이모티콘을 붙여넣은 경우 게인 맵의 해당 부분을
Color.GRAY
과 같은 중립 값으로 설정할 수 있습니다.Bitmap.setGainmap()
를 호출하여 수정된 게인 맵을 이미지에 다시 적용합니다.
추가 리소스
울트라 HDR 이미지에 관해 자세히 알아보려면 다음 추가 리소스를 참고하세요.