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

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

گرافیکی که شبیه سازی تفاوت بین محدوده دینامیکی استاندارد و محدوده دینامیکی بالا را نشان می دهد. گرافیک منظره ای با آسمان ابری را نشان می دهد. نیمه سمت راست، شبیه سازی HDR، دارای هایلایت روشن تر، سایه های تیره تر و رنگ های واضح تر است.
شکل 1. شبیه سازی تفاوت بین تصاویر محدوده دینامیکی استاندارد (SDR) و محدوده دینامیکی بالا (HDR). اگر دستگاهی از HDR پشتیبانی می‌کند، تصاویر می‌توانند سایه‌های تیره‌تر و هایلایت‌های روشن‌تری داشته باشند.

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

تصاویر Ultra HDR حاوی یک نقشه افزایش هستند. نقشه افزایش برای تعیین روشنایی افزایش یافته هر پیکسل در تصویر استفاده می شود. برای بررسی اینکه آیا یک تصویر در فرمت Ultra HDR است، تصویر یا قابل ترسیم را به Bitmap تبدیل کنید و با Bitmap.hasGainMap() (از اندروید 14 موجود است) تماس بگیرید تا بررسی کنید که آیا نقشه بهره دارد یا خیر.

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

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

همه را کنار هم گذاشتن

کد زیر نشان می دهد که کل فرآیند چگونه به نظر می رسد. این کد فرض می‌کند که یک تصویر در Bitmap بارگذاری شده است و بررسی می‌کند که آیا تصویر دارای نقشه بهره است یا خیر. در این صورت، کد حالت رنگ پنجره را به 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، به منابع اضافی زیر مراجعه کنید: