แสดงรูปภาพ Ultra HDR

รูปแบบรูปภาพ Ultra HDR ช่วยให้รูปภาพจัดเก็บข้อมูลเกี่ยวกับความเข้มของแสงได้มากขึ้น ส่งผลให้ไฮไลต์และเงามีความคมชัดมากขึ้น รวมถึงสีสันที่สดใสยิ่งขึ้น Android รองรับรูปภาพ Ultra HDR ที่เริ่มต้นด้วย Android 14 (API ระดับ 34) หากแอปของคุณทํางานในเวอร์ชันดังกล่าว คุณควรกําหนดค่าแอปให้แสดงรูปภาพเหล่านี้อย่างถูกต้อง ในทางกลับกัน หากแอปของคุณไม่แสดงภาพ Ultra HDR คุณจะประหยัดทรัพยากรของอุปกรณ์ได้ด้วยการไม่เปิดใช้การแสดงผล Ultra HDR หน้านี้จะอธิบายวิธีตรวจสอบว่ากราฟิกรองรับ Ultra HDR หรือไม่ และวิธีแสดงผลอย่างถูกต้อง

ตรวจสอบว่ามีแผนที่อัตราขยายหรือไม่

รูปภาพ Ultra HDR มีแผนที่อัตราขยาย แผนที่การขยายสัญญาณใช้เพื่อกำหนดความสว่างที่เพิ่มขึ้นของพิกเซลแต่ละพิกเซลในรูปภาพ หากต้องการตรวจสอบว่ารูปภาพอยู่ในรูปแบบ Ultra HDR ให้แปลงรูปภาพหรือรูปภาพที่วาดได้เป็นรูป Bitmap แล้วเรียกใช้ Bitmap.hasGainMap() (ใช้ได้ตั้งแต่ Android 14) เพื่อตรวจสอบว่ารูปภาพมีแผนที่การขยายสัญญาณหรือไม่

กำหนดค่าหน้าต่างให้แสดง Ultra HDR

หากต้องการแสดงรูปภาพ Ultra HDR ที่มีช่วงไดนามิกเต็มรูปแบบ ให้ตั้งค่าโหมดสีของหน้าต่างเป็น ActivityInfo.COLOR_MODE_HDR ซึ่งทำได้โดยการเรียกใช้เมธอด setColorMode() ของหน้าต่าง (API เหล่านี้มีให้ใช้งานใน Android 8 แต่รูปภาพจะไม่แสดงใน Ultra HDR เว้นแต่อุปกรณ์จะใช้ Android 14 ขึ้นไป)

สรุปข้อมูลทั้งหมด

โค้ดต่อไปนี้จะแสดงลักษณะของกระบวนการทั้งหมด โค้ดนี้ถือว่ามีการโหลดรูปภาพลงในบิตแมป และตรวจสอบว่ารูปภาพมีแผนที่การขยายสัญญาณหรือไม่ หากมี โค้ดจะเปลี่ยนโหมดสีของหน้าต่างเป็น 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 ได้ที่แหล่งข้อมูลต่อไปนี้