顯示 Ultra HDR 圖片

超 HDR 圖片格式可讓圖片儲存更多有關光線強度的資訊,使高亮度和陰影部分呈現更細緻的亮光和色彩。Android 從 Android 14 (API 級別 34) 開始支援 Ultra HDR 圖片。如果應用程式在這些版本中運作,請務必設定應用程式以正確顯示這些圖片。另一方面,如果應用程式未顯示 Ultra HDR 圖片,您可以不啟用 Ultra HDR 螢幕來節省裝置資源。本頁面說明如何檢查圖像是否支援 Ultra HDR,以及如何正確顯示這些圖像。

圖片顯示標準動態範圍與高動態範圍之間的差異。圖片顯示擁有多雲天空的風景。右半部則是模擬 HDR 效果,具備較亮的高亮度、陰影部分和更鮮明的色彩。
圖 1 模擬標準動態範圍 (SDR) 和高動態範圍 (HDR) 映像檔之間的差異。如果裝置支援 HDR,圖片的陰影就會更暗,高亮度部分也會越亮。

檢查增益地圖是否存在

Ultra HDR 圖片包含反轉地圖。增益圖可用於判斷圖片中每個像素的增高亮度。如要確認圖片是否為 Ultra HDR 格式,請將圖片或可繪項目轉換為 Bitmap,並呼叫 Bitmap.hasGainMap() (自 Android 14 起推出),檢查圖片是否有增益地圖。

設定視窗以顯示 Ultra HDR

如要以完整動態範圍顯示 Ultra HDR 圖片,請將視窗的色彩模式設為 ActivityInfo.COLOR_MODE_HDR。呼叫視窗的 setColorMode() 方法即可執行此操作。(這些 API 適用於 Android 8;不過,除非裝置搭載 Android 14 以上版本,否則圖片不會顯示 Ultra HDR 格式)。

平台比一比

下列程式碼顯示整個程序的樣子。此程式碼假設圖片已載入點陣圖,並檢查圖片是否有取得地圖。如果會,程式碼會將視窗的顏色模式切換為 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 圖片,請參閱下列其他資源: