הצגת תמונות Ultra HDR

פורמט התמונה Ultra HDR מאפשר לתמונות לאחסן יותר מידע עוצמת האור, וכתוצאה מכך מתקבלים אזורים בהירים וצלליות מפורטים יותר, וצבעים נועזים יותר. מערכת Android מספקת תמיכה בהפעלה של תמונות Ultra HDR עם Android 14 (רמת API 34). אם האפליקציה שלך פועלת בגרסאות האלה, חשוב להגדיר את האפליקציה כך שתציג את התמונות האלה כראוי. בצד השני אם באפליקציה לא מוצגות תמונות Ultra HDR, אפשר לשמור את המכשיר על ידי השבתת מסך Ultra HDR. בדף הזה מוסבר איך לבדוק אם הגרפיקה תומכת ב-Ultra HDR, ואיך להציג אותם כראוי.

גרפיקה שמציגה סימולציה של ההבדל בין טווח דינמי סטנדרטי לטווח דינמי גבוה. בגרפיקה מוצג נוף עם שמיים מעוננים. בחצי הימני, שהוא מדמה HDR, יש אזורים בהירים יותר, צלליות כהות יותר וצבעים בהירים יותר.
איור 1. הדמיה של ההבדל בין תקן תמונות שקשורות לטווח דינמי (SDR) ולטווח דינמי גבוה (HDR). אם המכשיר תומך באיכות HDR, יכולים להיות לתמונות צלליות כהות יותר ואזורים בהירים יותר.

איך בודקים אם יש מפת קלט

תמונות Ultra HDR מכילות מפת הוספה. מפת הצבירה היא משמש לקביעת הבהירות המוגברת של כל פיקסל בתמונה. כדי לאמת אם התמונה היא בפורמט Ultra HDR, צריך להמיר את התמונה או לצייר עליה Bitmap והתקשרות אל Bitmap.hasGainMap() (האפשרות זמינה החל מ-Android 14) כדי לבדוק אם יש לו מפת קלט.

הגדרת החלון להצגת Ultra HDR

כדי להציג תמונות Ultra HDR עם הטווח הדינמי המלא, צריך להגדיר את צבע החלון למצב ActivityInfo.COLOR_MODE_HDR. כדי לעשות זאת, שולחים setColorMode() של החלון. (ממשקי ה-API האלה זמין ב-Android 8. עם זאת, התמונות לא יוצגו ב-Ultra HDR במכשיר פועלת מערכת Android מגרסה 14 ואילך).

סיכום של כל המידע

הקוד הבא מראה איך נראה התהליך. הקוד הזה מניח תמונה נטען ל-Bitmap ובודק אם לתמונה יש מפת קלט. אם כן, מעביר את מצב הצבע של החלון ל-COLOR_MODE_HDR. אם המיקום לתמונה אין מפת קלט, הקוד מעביר את החלון לברירת המחדל במצב 'צבע'.

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);

מקורות מידע נוספים

מידע נוסף על תמונות Ultra HDR זמין במקורות המידע הנוספים: