Edytuj zdjęcia ultra HDR

Format obrazu ultra HDR koduje informacje o luminancji dzięki czemu urządzenia mogą wyświetlać jaśniejsze obrazy z bardziej intensywnymi kolorami. Gdy aplikacja edytuje obraz ultra HDR, musisz zadbać o zachowanie tych informacji o luminancji. Jest to ważne nawet wtedy, gdy urządzenie użytkownika nie obsługuje wyświetlania obrazu ultra HDR z pełną intensywnością. Użytkownik może bowiem udostępnić obraz osobie, która ma urządzenie obsługujące ultra HDR, lub zapisać obraz i wyświetlić go ponownie na nowym urządzeniu za kilka lat.

Dobra wiadomość jest taka, że większość metod Androida do edycji bitmap obsługuje format obrazu ultra HDR. Jeśli wprowadzasz podstawowe zmiany w obrazie, takie jak przycinanie lub obracanie, standardowe metody Androida wystarczą – uzyskasz obraz ultra HDR o nowych wymiarach lub orientacji.

Sytuacja jest bardziej skomplikowana, jeśli modyfikujesz zawartość obrazu. W takich przypadkach standardowe metody edycji zachowują informacje o luminancji starego obrazu, co może nie być tym, czego oczekujesz. W takich przypadkach może być konieczne edytowanie lub usunięcie mapy wzmocnienia (która koduje informacje o luminancji obrazu), aby uzyskać odpowiedni efekt.

Omówienie formatu ultra HDR

Format obrazu ultra HDR jest szczegółowo opisany w specyfikacji obrazu ultra HDR. Najważniejsze jest, aby zrozumieć, że obraz ultra HDR zawiera zarówno obraz podstawowy, jak i mapę wzmocnienia.

  • Obraz podstawowy zawiera informacje o kolorach każdego piksela obrazu.
  • Mapa wzmocnienia to standardowy obraz JPEG o tych samych proporcjach co obraz podstawowy, ale niekoniecznie o tych samych wymiarach w pikselach. Każdy piksel mapy wzmocnienia określa luminancję odpowiedniej części obrazu podstawowego.

Mapa wzmocnienia może być w skali szarości lub kolorowa. Jeśli mapa wzmocnienia jest kolorowa, każdy kanał koloru na mapie wzmocnienia określa luminancję tego kanału koloru w odpowiedniej części obrazu podstawowego. Jeśli mapa wzmocnienia jest w skali szarości, każdy piksel mapy wzmocnienia określa luminancję wszystkich 3 kanałów koloru w tej części obrazu podstawowego.

Mapa wzmocnienia musi mieć te same proporcje co obraz podstawowy, ale nie musi mieć tych samych wymiarów w pikselach. Gdy platforma Android tworzy obrazy ultra HDR, tworzy mapę wzmocnienia o mniejszej szerokości i wysokości niż obraz podstawowy. Dzięki temu rozmiar pliku jest znacznie mniejszy, ale nadal zawiera wystarczającą ilość informacji, aby uzyskać dobry efekt. Oznacza to, że każdy piksel na mapie wzmocnienia może przechowywać informacje o luminancji kilku pikseli na obrazie podstawowym.

Podstawowe zmiany w ultra HDR

Jeśli używasz interfejsów API Bitmap Androida do wprowadzania podstawowych przekształceń obrazu ultra HDR, metody wprowadzają odpowiednie zmiany na mapie wzmocnienia. Obsługiwane są te operacje Bitmap:

  • Obrót: jeśli obrócisz obraz ultra HDR, metoda obróci też mapę wzmocnienia.
  • Przycinanie: jeśli przytniesz obraz ultra HDR, metoda odpowiednio przytnie mapę wzmocnienia.
  • Skalowanie: jeśli przeskalujesz obraz ultra HDR, metoda przeskaluje mapę wzmocnienia tak, aby miała połowę szerokości i połowę wysokości przeskalowanego obrazu podstawowego.

W każdym przypadku informacje o luminancji są zachowywane.

Zaawansowane zmiany w ultra HDR

Jeśli wprowadzisz bardziej złożone zmiany w obrazie ultra HDR, mapa wzmocnienia pozostanie bez zmian, co może nie dać oczekiwanych rezultatów.

Typowe zmiany, które mogą spowodować taką sytuację, to:

  • Dodawanie naklejek lub emoji: dodana naklejka będzie miała te same wartości luminancji i intensywności kolorów co obszar, na którym została wklejona.
  • Nakładanie drugiego obrazu: nowy obraz będzie używać informacji o luminancji i intensywności kolorów treści, na którą jest nakładany.
  • Dodawanie filtrów: informacje ze starej mapy wzmocnienia mogą nie być odpowiednie dla zmodyfikowanego obrazu podstawowego.

W każdym przypadku zachowywane są stare informacje o luminancji i intensywności kolorów, ale mogą one nie być odpowiednie dla zmodyfikowanego obrazu.

Jeśli oryginalna mapa wzmocnienia jest odpowiednia dla edytowanego obrazu, nie musisz nic robić. Jeśli chcesz zmodyfikować mapę wzmocnienia, zwykle wykonujesz te czynności:

  1. Pobierz bieżącą mapę wzmocnienia obrazu , wywołując Bitmap.getGainmap(), i zapisz ją w pamięci podręcznej.
  2. Zmodyfikuj obraz podstawowy zgodnie z potrzebami.
  3. Wprowadź odpowiednie zmiany w mapie wzmocnienia zapisanej w pamięci podręcznej. Jeśli na przykład wkleisz emoji na obraz podstawowy, możesz ustawić odpowiednią część mapy wzmocnienia na wartość neutralną, np. Color.GRAY.

  4. Zastosuj zmodyfikowaną mapę wzmocnienia do obrazu , wywołując Bitmap.setGainmap().

Dodatkowe materiały

Więcej informacji o obrazach ultra HDR znajdziesz w tych materiałach: