يتيح تنسيق الصور HDR الفائق أن تخزّن الصور مزيدًا من المعلومات حول كثافة الإضاءة، ما يؤدي إلى إبراز التظليل والتظليل بمزيد من التفصيل وألوان أكثر شدة. يوفِّر Android إمكانية التقاط صور بدقة HDR فائقة بدءًا من Android 14 (المستوى 34 من واجهة برمجة التطبيقات). فإذا كان تطبيقك يعمل على هذه الإصدارات، فمن المهم تهيئة تطبيقك لعرض هذه الصور بشكل صحيح. في المقابل، إذا كان تطبيقك لا يعرض صورًا بدقة HDR فائقة، يمكنك توفير موارد الجهاز من خلال عدم تفعيل عرض "دقة HDR فائقة". توضّح هذه الصفحة طريقة التحقق مما إذا كانت الرسومات تتوافق مع دقة HDR فائقة، وكيفية عرضها بشكل صحيح.
![رسم يعرض محاكاة للفرق بين النطاق الديناميكي العادي والنطاق الديناميكي العالي. يعرض الرسم منظرًا لسماء غائمة. أما النصف الأيمن، الذي يحاكي تقنية النطاق العالي الديناميكية، فيتميّز بتظليلات أكثر سطوعًا وظلالًا أغمق وألوانًا أكثر وضوحًا.](https://developer.android.com/static/media/images/grow/ultrahdr-simulation.png?authuser=8&hl=ar)
التحقق من وجود خريطة الحصول على النقاط
تحتوي الصور ذات النطاق العالي الديناميكية على خريطة ربح. تُستخدم خريطة الكسب
لتحديد السطوع المتزايد لكل بكسل في الصورة. للتحقّق مما إذا كانت إحدى الصور
بتنسيق "دقة HDR فائقة"، يمكنك تحويل الصورة أو الصورة القابلة للرسم إلى
Bitmap
والاتصال بـ Bitmap.hasGainMap()
(خيار متوفّر منذ Android 14) لمعرفة ما إذا كانت تحتوي على خريطة كسب.
ضبط النافذة لعرض ميزة "دقة HDR فائقة"
لعرض صور بدقة HDR فائقة باستخدام النطاق الديناميكي الكامل، اضبط وضع ألوان النافذة على ActivityInfo.COLOR_MODE_HDR
. ويمكنك إجراء ذلك من خلال استدعاء طريقة
النافذة setColorMode()
. (تتوفّر واجهات برمجة التطبيقات هذه اعتبارًا من نظام التشغيل Android 8، ومع ذلك لا يتم عرض الصور بدقة HDR فائقة ما لم يكن الجهاز يعمل بنظام التشغيل Android 14 أو بإصدار أحدث).
خلاصة ما سبق ذكره
يوضح الرمز التالي كيف تبدو العملية بأكملها. تفترض هذه التعليمة البرمجية تحميل صورة في صورة نقطية، وتتحقق مما إذا كانت الصورة تحتوي على خريطة اكتساب. وفي حال إجراء ذلك، سيؤدي ذلك إلى تبديل
وضع ألوان النافذة إلى 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، يمكنك الاطّلاع على المراجع الإضافية التالية:
- فيديو: إنشاء تجارب وسائط عالية الجودة على Android
- نموذج التطبيق: عرض دقة HDR فائقة
- مواصفات تنسيق الصورة الفائقة بنطاق عالي الديناميكية