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

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

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

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

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

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

مصادر إضافية

لمزيد من المعلومات حول الصور بدقة HDR فائقة، اطّلِع على المراجع الإضافية التالية: