Format zdjęć ultra HDR pozwala przechowywać więcej informacji intensywności światła, co przekłada się na bardziej szczegółowe podświetlenia i cienie i głębsze kolory. Od początku Android zapewnia obsługę obrazów Ultra HDR z Androidem 14 (poziom interfejsu API 34). Jeśli aplikacja działa w tych wersjach, jest to ważne jest, aby skonfigurować aplikację tak, aby poprawnie wyświetlała te obrazy. Z drugiej strony Jeśli aplikacja nie wyświetla obrazów ultra HDR, możesz zapisać urządzenie zasobów, nie włączając wyświetlacza Ultra HDR. Na tej stronie dowiesz się, jak sprawdzić czy grafika obsługuje ultra HDR, i jak ją prawidłowo wyświetlać.
![Grafika przedstawiająca symulację różnicy między standardowym a wysokim zakresem dynamiki. Grafika przedstawia krajobraz z pochmurnym niebem. Prawa połowa, symulująca HDR, ma jaśniejsze podświetlenia, ciemniejsze cienie i wyraźniejsze kolory.](https://developer.android.google.cn/static/media/images/grow/ultrahdr-simulation.png?authuser=8&hl=pl)
Sprawdź, czy jest dostępna mapa zysku
Zdjęcia ultra HDR zawierają mapę wzmocnienia. Mapa wzmocnienia to
używane do określania, jak zwiększyć jasność każdego piksela na obrazie. Aby zweryfikować
jeśli obraz jest w formacie Ultra HDR, przekonwertuj go lub rysuj na
Bitmap
i zadzwoń pod numer Bitmap.hasGainMap()
(dostępne od Androida 14), aby sprawdzić, czy ma mapę wzmocnienia.
Skonfiguruj okno pod kątem wyświetlania technologii ultra HDR
Aby wyświetlać obrazy ultra HDR w pełnym zakresie dynamiki, ustaw kolor okna
do ActivityInfo.COLOR_MODE_HDR
. W tym celu wywołaj metodę
metody setColorMode()
okna. (Te interfejsy API są
dostępna na Androidzie 8; ale nie w trybie ultra HDR, chyba że
masz urządzenie z Androidem 14 lub nowszym).
Podsumowanie
Poniższy kod pokazuje, jak wygląda cały proces. Ten kod zakłada, że obraz
jest wczytywany do bitmapy i sprawdza, czy obraz ma mapę wzmocnienia. Jeśli tak, parametr
kod przełączy tryb kolorów okna na COLOR_MODE_HDR
. Jeśli
obraz nie ma mapy wzmocnienia, kod przełączy okno do domyślnego
tryb kolorów.
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);
Dodatkowe materiały
Więcej informacji o zdjęciach ultra HDR znajdziesz w tych dodatkowych materiałach:
- Film: Tworzenie wysokiej jakości multimediów na Androida funkcje
- Przykładowa aplikacja: Wyświetlanie ultra HDR
- Specyfikacja formatu obrazu ultra HDR