告别“灰蒙蒙”的屏幕截图,Android16将支持真HDR截图功能

IT之家 2025-02-21 20:14:34

IT之家2月21日消息,随着HDR(高动态范围)内容的日益普及,用户对在安卓设备上截取HDR截图的需求也逐渐增加。此前,由于大多数内容仍以标准动态范围(SDR)形式呈现,安卓系统并未支持HDR截图。然而,如今HDR内容的流行使得用户在截取包含HDR元素的屏幕时,希望能够保留其原有的色彩和亮度细节。令人欣喜的是,谷歌在即将发布的安卓16中终于加入了对HDR截图的支持。

HDR,即高动态范围,是指图像或视频具有比标准动态范围(SDR)内容更广泛的亮度和色彩范围。HDR能够呈现出更逼真的视觉效果,包括更明亮的高光、更深的阴影以及更丰富的细节,使图像看起来更加接近真实世界。为了显示HDR内容,设备需要配备支持更广色域的HDR显示屏,而非仅限于相对狭窄的sRGB标准。尽管部分现代安卓手机和平板电脑已配备HDR显示屏,但目前大多数内容仍以SDR格式存在。

此前,即使在支持HDR显示的设备上截取HDR内容的截图,这些截图也会以SDR格式保存。这是因为安卓系统在编码截图图像时,并未保留HDR内容的额外色彩信息,导致HDR截图中的高光部分显得较暗。

据IT之家了解,在安卓13引入端到端HDR视频支持后,谷歌不得不更新安卓的截图算法,以使截图尽可能接近屏幕上的内容。然而,由于截图仍然以SDR格式保存,HDR截图中的HDR区域会显得较暗,而SDR内容则会显得与HDR内容同样明亮,未能完全反映真实观感。安卓14进一步引入了对UltraHDR的支持,但由于HDR图像通常在SDR应用界面中显示,谷歌不得不设计一种方法,将SDR界面和HDR图像编码到单个SDR截图中。为实现这一点,谷歌选择提亮应用界面并裁剪HDR高光,但这也导致截图无法真实还原用户所看到的内容。

到了安卓15QPR1,系统引入了一种用于HDR截图的局部色调映射算法。该算法既能保留界面颜色,又能防止HDR高光被裁剪,显著提升了HDR截图的效果。尽管如此,截图仍然是SDR格式,在HDR显示屏上无法完全展现HDR的视觉冲击力。

最终,在安卓16中,谷歌实现了对真正HDR截图的支持。在安卓16Beta2中,AndroidAuthority发现HDR内容的截图被保存为HDR格式。当在Pixel手机的照片应用中查看这些截图时,屏幕会因HDR高光的突出而变亮。AndroidAuthority将Pixel7Pro升级至安卓16Beta2前后分别截取了同一HDR图像的截图进行对比。结果显示,升级前的截图为SDR格式,而升级后的截图则为HDR格式。

通过对安卓源代码的深入分析,发现在SurfaceFlinger(安卓屏幕渲染中的关键系统服务)中多次提及“真正HDR截图”功能。启用该功能后,HDR内容可以无色调映射地进行截图。

显示分析师DylanRaga和GitHub用户ledoge检查了安卓16生成的HDR截图,并确认这些截图是嵌入了HDR增益图(gainmap)的PNG文件。大多数常规工具无法检测到这些增益图,但通过专业的PNG检查器可以发现它们。正是这些增益图使得截图在安卓16设备上以HDR形式显示,而在其他设备上则以SDR形式显示。

目前尚不清楚谷歌为何选择PNG格式用于HDR截图,而不是支持UltraHDR的JPEG格式。或许是希望避免JPEG压缩可能带来的伪影,尤其是在裁剪截图时。

0 阅读:4