Format obrazu ultra HDR pozwala przechowywać więcej informacji o intensywności światła, co skutkuje bardziej szczegółowymi podświetleniami i cięciami oraz bardziej intensywnymi kolorami. Android obsługuje obrazy w ultra HDR od wersji Android 14 (poziom API 34). Jeśli Twoja aplikacja działa w tych wersjach, musisz ją odpowiednio skonfigurować, by wyświetlały te obrazy. Z drugiej strony, jeśli w aplikacji nie wyświetlają się obrazy ultra HDR, możesz zaoszczędzić zasoby urządzenia, nie włączając wyświetlacza Ultra HDR. Na tej stronie wyjaśniamy, jak sprawdzić, czy grafika obsługuje tryb Ultra HDR, oraz jak ją prawidłowo wyświetlić.
Sprawdzanie, czy istnieje mapa wzmocnienia
Zdjęcia w formacie ultra HDR zawierają mapę wzmocnienia. Mapa wzmocnienia służy do określania zwiększonej jasności każdego piksela na obrazie. Aby sprawdzić, czy obraz jest w formacie Ultra HDR, przekonwertuj go lub obiekt rysowalny na Bitmap
i wywołaj Bitmap.hasGainMap()
(dostępny od Androida 14) w celu sprawdzenia, czy ma mapę wzmocnienia.
Konfigurowanie okna w celu wyświetlania obrazu w formacie Ultra HDR
Aby wyświetlać obrazy w trybie Ultra HDR z pełnym zakresem dynamicznym, ustaw tryb kolorów okna na ActivityInfo.COLOR_MODE_HDR
. W tym celu wywołaj metodę setColorMode()
okna. (te interfejsy API są dostępne od Androida 8, ale obrazy nie są wyświetlane w ultra HDR, chyba że urządzenie ma Androida 14 lub nowszą wersję).
Podsumowanie
Poniżej znajdziesz kod, który pokazuje cały proces. Ten kod zakłada, że obraz jest wczytany do mapy bitowej, i sprawdza, czy obraz ma mapę wzmocnienia. Jeśli tak, kod przełączy tryb kolorów okna na COLOR_MODE_HDR
. Jeśli obraz nie ma mapy wzmocnienia, kod przełączy okno na domyślny tryb kolorów.
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
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);
Dodatkowe materiały
Więcej informacji o obrazach w ultra HDR znajdziesz w tych materiałach:
- Film: Tworzenie wysokiej jakości treści multimedialnych na Androida
- Przykładowa aplikacja: Wyświetlanie obrazu w formacie Ultra HDR
- Specyfikacja formatu obrazu ultra HDR
- Film: Historia dewelopera aplikacji na Androida: Wczesne wprowadzenie technologii ultra HDR na Instagramie zmienia UX w zaledwie 3 miesiące