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

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

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

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

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

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

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

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