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

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

التحقّق من وجود "خريطة كسب" (gain map)

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

ضبط النافذة لعرض دقة HDR فائقة

لعرض صور Ultra HDR بالنطاق الديناميكي الكامل، اضبط وضع ألوان النافذة على ActivityInfo.COLOR_MODE_HDR. يمكنك إجراء ذلك من خلال استدعاء طريقة setColorMode() في النافذة. (تتوفّر واجهات برمجة التطبيقات هذه بدءًا من الإصدار 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، اطّلِع على المراجع الإضافية التالية: