عرض صور بتقنية Ultra HDR

يتيح تنسيق صور Ultra HDR تخزين المزيد من المعلومات حول شدة الضوء، ما يؤدي إلى إبراز التفاصيل بشكل أفضل في الأجزاء الأكثر سطوعًا والأكثر ظلامًا، وإظهار الألوان بشكل أكثر كثافة. يتيح نظام التشغيل Android استخدام صور Ultra HDR بدءًا من الإصدار 14 (المستوى 34 لواجهة برمجة التطبيقات). إذا كان تطبيقك يعمل على هذه الإصدارات، من المهم إعداد تطبيقك لعرض هذه الصور بشكل صحيح. في المقابل، إذا كان تطبيقك لا يعرض صورًا بدقة Ultra HDR، يمكنك توفير موارد الجهاز من خلال عدم تفعيل عرض Ultra HDR. توضّح هذه الصفحة كيفية التحقّق مما إذا كانت الرسومات متوافقة مع Ultra HDR وكيفية عرضها بشكل صحيح.

التحقّق من وجود خريطة كسب

تحتوي صور Ultra HDR على خريطة كسب. يتم استخدام خريطة الكسب لتحديد السطوع المتزايد لكل بكسل في الصورة. للتحقّق مما إذا كانت الصورة بتنسيق Ultra HDR، يمكنك تحويل الصورة أو العنصر القابل للرسم إلى Bitmap واستدعاء Bitmap.hasGainMap() (متاح منذ Android 14) للتحقّق مما إذا كانت تتضمّن خريطة كسب.

ضبط النافذة لعرض محتوى Ultra HDR

لعرض صور Ultra HDR بالنطاق الديناميكي الكامل، اضبط وضع ألوان النافذة على ActivityInfo.COLOR_MODE_HDR. يمكنك إجراء ذلك من خلال استدعاء طريقة setColorMode() الخاصة بالنافذة. (تتوفّر واجهات برمجة التطبيقات هذه على الإصدار 8 من نظام التشغيل Android، ولكن لا يتم عرض الصور بدقة Ultra HDR إلا إذا كان الجهاز يعمل بالإصدار 14 من نظام التشغيل Android أو إصدار أحدث).

خلاصة ما سبق ذكره

يوضّح الرمز البرمجي التالي شكل العملية بأكملها. يفترض هذا الرمز تحميل صورة في 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، اطّلِع على المراجع الإضافية التالية: