يتيح تنسيق الصورة بتقنية "دقة HDR فائقة" تخزين المزيد من المعلومات حول شدة الإضاءة، ما يؤدي إلى إبراز التفاصيل في الأجزاء الأكثر بروزًا والظلال، وإظهار الألوان بشكل أكثر كثافة. يتيح نظام التشغيل Android استخدام الصور بدقة Ultra HDR بدءًا من الإصدار Android 14 (المستوى 34 لواجهة برمجة التطبيقات). إذا كان تطبيقك يعمل على هذه الإصدارات، من المهم ضبطه لعرض هذه الصور بشكل صحيح. من ناحية أخرى، إذا كان تطبيقك لا يعرض صورًا بدقة Ultra HDR، يمكنك توفير موارد الجهاز من خلال عدم تفعيل عرض صور بدقة Ultra HDR. توضّح هذه الصفحة كيفية التحقّق مما إذا كانت الرسومات متوافقة مع ميزة "دقة HDR الفائقة"، وكيفية عرضها بشكل صحيح.
التحقّق من وجود "خريطة كسب" (gain map)
تحتوي صور Ultra HDR على خريطة كسب. يتم استخدام خريطة الكسب لتحديد السطوع المتزايد لكل بكسل في الصورة. للتحقّق مما إذا كانت الصورة بتنسيق Ultra HDR، يمكنك تحويل الصورة أو العنصر القابل للرسم إلى Bitmap واستدعاء Bitmap.hasGainMap() (متاح ابتداءً من Android 14) للتحقّق مما إذا كانت تتضمّن خريطة كسب.
ضبط النافذة لعرض صور Ultra HDR
لعرض صور Ultra HDR بالنطاق الديناميكي الكامل، اضبط وضع ألوان النافذة على ActivityInfo.COLOR_MODE_HDR. يمكنك إجراء ذلك من خلال استدعاء طريقة setColorMode() في النافذة. (تتوفّر واجهات برمجة التطبيقات هذه بدءًا من الإصدار Android 8، ولكن لا يتم عرض الصور بدقة Ultra HDR إلا إذا كان الجهاز يعمل بالإصدار Android 14 أو إصدار أحدث).
خلاصة ما سبق ذكره
يوضّح الرمز التالي شكل العملية بأكملها. يفترض هذا الرمز أنّه يتم تحميل صورة إلى 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);
مراجع إضافية
لمزيد من المعلومات حول صور Ultra HDR، يُرجى الاطّلاع على المراجع الإضافية التالية:
- الفيديو: إنشاء تجارب وسائط عالية الجودة على Android
- نموذج تطبيق: عرض صور بدقة HDR الفائقة
- مواصفات تنسيق الصور بدقة HDR الفائقة
- فيديو: قصة نجاح مطوّر برامج Android: كيف غيّر Instagram تجربة المستخدم في 3 أشهر فقط من خلال استخدام ميزة "دقة HDR الفائقة" في مرحلة مبكرة