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