يتيح تنسيق الصور بدقة 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 فائقة، اطّلِع على المراجع الإضافية التالية:
- فيديو: توفير تجارب وسائط عالية الجودة على Android
- مثال على التطبيق: عرض دقة HDR الفائقة
- مواصفات تنسيق الصور بدقة HDR الفائقة
- فيديو: قصة مطوّر تطبيقات Android: تحسين تجربة المستخدم في Instagram خلال 3 أشهر فقط من خلال استخدام ميزة "دقة HDR الفائقة"