نمایش تصاویر Ultra HDR

فرمت تصویر Ultra HDR به تصاویر اجازه می‌دهد تا اطلاعات بیشتری در مورد شدت نور ذخیره کنند، که منجر به هایلایت‌ها و سایه‌های دقیق‌تر و رنگ‌های شدیدتر می‌شود. اندروید از اندروید ۱۴ (سطح API ۳۴) پشتیبانی از تصاویر Ultra HDR را ارائه می‌دهد. اگر برنامه شما روی این نسخه‌ها اجرا می‌شود، پیکربندی برنامه برای نمایش صحیح این تصاویر مهم است. از سوی دیگر، اگر برنامه شما تصاویر Ultra HDR را نمایش نمی‌دهد، می‌توانید با فعال نکردن نمایش Ultra HDR در منابع دستگاه صرفه‌جویی کنید. این صفحه نحوه بررسی اینکه آیا گرافیک از Ultra HDR پشتیبانی می‌کند یا خیر و نحوه نمایش صحیح آنها را توضیح می‌دهد.

وجود نقشه بهره را بررسی کنید

تصاویر Ultra HDR حاوی یک نقشه بهره (gain map) هستند. نقشه بهره برای تعیین میزان افزایش روشنایی هر پیکسل در تصویر استفاده می‌شود. برای تأیید اینکه آیا یک تصویر در قالب Ultra HDR است، تصویر یا فایل قابل ترسیم را به یک Bitmap تبدیل کنید و Bitmap.hasGainMap() (که از اندروید ۱۴ در دسترس است) را فراخوانی کنید تا بررسی کنید که آیا نقشه بهره دارد یا خیر.

پنجره خود را برای نمایش Ultra HDR پیکربندی کنید

برای نمایش تصاویر Ultra HDR با محدوده دینامیکی کامل، حالت رنگ پنجره را روی ActivityInfo.COLOR_MODE_HDR تنظیم کنید. این کار را با فراخوانی متد setColorMode() پنجره انجام دهید. (این APIها از اندروید ۸ در دسترس هستند؛ با این حال، تصاویر در Ultra HDR نمایش داده نمی‌شوند مگر اینکه دستگاه اندروید ۱۴ یا بالاتر را اجرا کند.)

همه چیز را کنار هم قرار دادن

کد زیر نحوه‌ی کل فرآیند را نشان می‌دهد. این کد فرض می‌کند که یک تصویر در یک Bitmap بارگذاری شده است و بررسی می‌کند که آیا تصویر دارای نقشه‌ی بهره (gain map) است یا خیر. در صورت وجود، کد حالت رنگ پنجره را به COLOR_MODE_HDR تغییر می‌دهد. اگر تصویر نقشه‌ی بهره نداشته باشد، کد پنجره را به حالت رنگ پیش‌فرض تغییر می‌دهد.

کاتلین

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

جاوا

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، به منابع اضافی زیر مراجعه کنید: