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

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

วันที่ กราฟิกแสดงการจำลองความแตกต่างระหว่างช่วงไดนามิกมาตรฐานกับช่วงไดนามิกสูง กราฟิกแสดงภูมิประเทศที่มีท้องฟ้าเมฆมาก ส่วนครึ่งขวาซึ่งจำลอง HDR จะมีไฮไลต์ที่สว่างขึ้น เงาที่เข้มขึ้น และสีที่คมชัดขึ้น
รูปที่ 1 การจำลองความแตกต่างระหว่างมาตรฐาน รูปภาพ Dynamic Range (SDR) และ High Dynamic Range (HDR) หากอุปกรณ์รองรับ ซึ่ง 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 ได้จากแหล่งข้อมูลเพิ่มเติมต่อไปนี้