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

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

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

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

ضبط النافذة لعرض دقة 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 فائقة، اطّلِع على المراجع الإضافية التالية: