از 27 مارس 2025، توصیه می کنیم از android-latest-release
به جای aosp-main
برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
HDR در اسکرین شات های اندروید
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
از زمان معرفی ویدیو با محدوده دینامیکی بالا (HDR)، سرویسهای استریم پخش ویدیوی HDR را با تمرکز بر تجربههای تمام صفحه آغاز کردهاند. اخیراً، برنامههای رسانههای اجتماعی پشتیبانی از ویدیوی HDR و Ultra HDR را راهاندازی کردهاند که نشاندهنده علاقه رو به رشد به پذیرش HDR در بین برنامههای مختلف است.
پشتیبانی اندروید از HDR
موارد زیر نقاط عطف پشتیبانی اندروید از فناوری HDR طی چندین سال است:
اندروید 7
- پشتیبانی اولیه از رمزگشایی و نمایش ویدیوی HDR.
- پیشرفت های مداوم در قابلیت های HDR.
اندروید 13
- پشتیبانی سرتاسری از فیلمبرداری HDR، رمزگذاری و نمایش.
- معرفی ترکیب SDR و HDR مختلط ، تعریف محدوده های مختلف روشنایی قابل نمایش بین SDR و HDR.
اندروید 14
پشتیبانی از اسکرین شات با HDR نیز تکامل یافته و در طول سال ها دستخوش تغییرات زیادی شده است.
پیشرفت در قابلیت های اسکرین شات HDR
این بخش پیشرفت قابلیت اسکرین شات HDR در به روز رسانی های اخیر اندروید را دنبال می کند.
اندروید 9
SurfaceFlinger، سازنده گرافیک اندروید، پشتیبانی از ویدیوی HDR را معرفی می کند. رندر GPU از ویدئوهای HDR و تصاویر صفحه با یک نگاشت چند جمله ای پیچیده پشتیبانی می شود. این منحنی نگاشت تون همیشه معادل نگاشت تن نمایشگر نیست، بنابراین اسکرین شات ها با محتوای روی صفحه تفاوت دارند.
اندروید 13
یک پلاگین نگاشت آهنگ به بلوک رندر GPU SurfaceFlinger اضافه شده است، که OEM را قادر می سازد یک سایه زن GPU برای مطابقت با منحنی نگاشت آهنگ نمایشگر خود فراهم کند. اسکرینشاتها تقریباً با آنچه روی صفحه است مطابقت دارند، اما با تفاوتهای زیر:
- اسکرین شات ها در قالب SDR باقی می مانند. در نتیجه، وقتی در کنار یک صحنه HDR مشاهده میشود، مناطق HDR در اسکرین شات کمنورتر به نظر میرسند.
- روشنایی SDR مدیریت نمیشود، در نتیجه محتوای SDR درون تصویر به روشنی محتوای HDR ظاهر میشود.
به عبارت دیگر، هر ویدیوی HDR گرفته شده در اسکرین شات به ویدیوی SDR تبدیل می شود.
اندروید 14
Ultra HDR چالش مهمی برای گرفتن اسکرین شات است. برخلاف ویدیوها، تصاویر معمولاً در فریم بافر UI ارائه می شوند که دو مفهوم اصلی دارد:
- تصاویر نمی توانند پردازش تصویر، از جمله نقشه رنگی، که با رابط کاربری اطراف متفاوت است داشته باشند.
- برنامهها هنگام رندر کردن رابط کاربری خود مسئول نگاشت تون مبتنی بر منبع هستند.
برای کاهش این چالش، سه پیاده سازی بالقوه اسکرین شات وجود دارد:
- جزئیات HDR یک تصویر Ultra HDR را حفظ کنید، و در نتیجه یک رابط کاربری برنامه تاریک در تصویر ایجاد می شود.
- جزئیات رابط کاربری برنامه را حفظ کنید، که باعث بریده شدن تصویر Ultra HDR می شود.
- با روشن کردن رابط کاربری برنامه در حین برش دادن نکات برجسته HDR به خطر بیفتید.
اندروید 14 سومین رویکرد روشنتر کردن رابط کاربری برنامه و بریدهشدن نکات برجسته HDR را اجرا میکند.
Android 15-QPR1
SurfaceFlinger شامل یک الگوریتم محلی برای نقشه برداری از صفحه نمایش است. این فرآیند شامل:
- تقسیم تصویر ورودی به تصاویر کوچکتر
- محاسبه حداکثر روشنایی در هر تصویر، و حذف مقادیر کم درخشندگی در هر بخش.
- درون یابی درخشندگی های محاسبه شده از طریق محو کردن و نمونه برداری مجدد.
- اعمال یک توننگ رینهارد پارامتری بر روی تصویر ورودی، بر اساس مقادیر درخشندگی درونیابی شده.
این الگوریتم بهبودهای قابل توجهی از اسکرین شات را بین Android 14 و Android 15-QPR1 نشان می دهد، همانطور که در مثال های زیر نشان داده شده است:
مثال 1 تصویری از یک ویدیوی HDR است که در بالای صفحه Chrome حاوی Ultra HDR قرار گرفته است. رنگهای رابط کاربری بیشتر در اجرای جدید حفظ میشوند و تصویر دیگر بریده نمیشود.
اندروید 14 | Android 15-QPR1 |
---|
 |  |
شکل 1. مقایسه اندروید 14 و اندروید 15-QPR1 برای مثال 1.
مثال 2 تصویری از یک ویدیوی HDR است که با اسکرین شات های بعدی در بالای تنظیمات قرار گرفته است. در اندروید 14، رنگ های اسکرین شات به طور متوالی تیره تر می شوند. در Android 15-QPR1، تونمپر به درستی رنگهای رابط کاربری را تکرار کرده و حفظ میکند.
اندروید 14 | Android 15-QPR1 |
---|
 |  |
شکل 2. مقایسه اندروید 14 و اندروید 15-QPR1 برای مثال 2.
اندروید 16
مشابه Ultra HDR ، اسکرینشاتهای HDR یک نقشه گام را در فایل اسکرین شات ذخیره میکنند تا نمایش HDR را در حین رندر بازیابی کند. با این حال، برخلاف Ultra HDR، اسکرین شات در قالب PNG برای سازگاری با سیستمهایی که اسکرینشاتهای PNG را دریافت میکنند، باقی میماند.
جزئیات تولید اسکرین شات به شرح زیر است:
- هنگامی که محتوای HDR بر روی دستگاه نمایش داده می شود، یک عکس از صفحه نمایش با استفاده از پیکسل های FP16 ایجاد می شود.
- نقشهنگار محلی که در Android 15-QPR1 توضیح داده شده است، یک نمایش SDR پایه 8 بیتی ایجاد میکند.
- یک نقشه 8 بیتی با ترکیب بازنمود پایه SDR با اجرای HDR تولید می شود.
- بازنمود پایه SDR و gainmap در یک فایل PNG کدگذاری می شوند.
جزئیات رمزگذاری PNG به شرح زیر است:
- Gainmap بهعنوان یک تصویر PNG کدگذاری میشود که شامل یک قطعه gmAP است که حاوی فراداده ISO 21496-1 برای gainmap است.
- ارائه پایه SDR به عنوان یک تصویر PNG کدگذاری شده است که شامل یک قطعه gmAP است که حاوی نسخه فراداده ISO 21496-1 است. این تصویر PNG همچنین شامل یک تکه gdAT است که شامل تمام نقشه رمزگذاریشده PNG است.
شکل زیر طرح تکه های PNG را نشان می دهد:

شکل 3. چیدمان قطعات PNG.
با اندروید 16، کدک PNG از کدگذاری و رمزگشایی این PNG ها پشتیبانی می کند. برنامه ها می توانند یک PNG را با یک نقشه به همان شیوه Ultra HDR نمایش دهند.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# HDR in Android screenshots\n\nSince the introduction of high dynamic range (HDR) video, streaming services\nhave started streaming HDR video, focusing on full-screen\nexperiences. Recently, social media apps\nhave launched support for HDR video and Ultra HDR,\nindicating growing interest in HDR adoption across various apps.\n\nAndroid support for HDR\n-----------------------\n\nThe following are the milestones of Android's support for HDR technology over\nseveral years:\n\n### Android 7\n\n- Initial support for HDR video decoding and display.\n- Continued advancements in HDR capabilities.\n\n### Android 13\n\n- End-to-end support for HDR video capture, encoding, and display.\n- Introduction of [Mixed SDR and HDR composition](/docs/core/display/mixed-sdr-hdr), defining different displayable luminance ranges between SDR and HDR.\n\n### Android 14\n\n- Support for HDR images with [Ultra HDR](https://developer.android.com/media/grow/ultra-hdr).\n\nScreenshot support with HDR has also evolved and undergone a number of changes\nover the years.\n\nAdvancements in HDR screenshot capabilities\n-------------------------------------------\n\nThis section tracks the progression of HDR screenshot capability in recent\nAndroid updates.\n\n### Android 9\n\nSurfaceFlinger, Android's graphics compositor, introduces HDR video support. GPU\nrendering of HDR video and screenshots is supported with a complex polynomial\ntone mapper. This tone-mapping curve isn't always equivalent to the display\ntone-mapper, so screenshots differ from the on-screen content.\n\n### Android 13\n\nA [tone mapping](/docs/core/display/tone-mapping) plugin is added to the\nSurfaceFlinger's GPU rendering block, enabling the OEM to provide a GPU shader\nto match their display's tone-mapping curve. Screenshots almost match what is on\nscreen, but with the following differences:\n\n- Screenshots remain in SDR format. Consequently, when viewed alongside an HDR scene, the HDR regions within the screenshot appear dimmer.\n- SDR luminance isn't managed, resulting in SDR content within the screenshot appearing as bright as HDR content.\n\nIn other words, any HDR video captured in the screenshot is converted to SDR\nvideo.\n\n### Android 14\n\nUltra HDR poses a significant challenge to screenshotting. Unlike videos, images\nare typically rendered within the UI framebuffer, which has two main\nimplications:\n\n- Images can't have image processing, including tonemapping, that differs from the surrounding UI.\n- Apps are responsible for source-based tone mapping when rendering their UI.\n\nTo alleviate this challenge, there are three potential screenshotting\nimplementations:\n\n- Preserve the HDR details of an Ultra HDR image, resulting in a darkened app UI in the screenshot.\n- Preserve the app UI details, causing Ultra HDR image clipping.\n- Compromise by brightening the app UI while clipping HDR highlights.\n\nAndroid 14 implements the third approach of brightening the app UI and clipping\nHDR highlights.\n\n### Android 15-QPR1\n\nSurfaceFlinger includes a local tone-mapping algorithm for screenshots. This\nprocess involves:\n\n- Dividing the input image into smaller images.\n- Computing the maximum luminance in each image, and discarding low luminance values within each section.\n- Interpolating the computed luminances through blurring and resampling.\n- Applying a parameterized Reinhard tonemapper to the input image, based on the interpolated luminance values.\n\nThis algorithm shows significant screenshot improvements between Android 14 and\nAndroid 15-QPR1, as shown in the following examples:\n\n- Example 1 is a screenshot of an HDR video overlaid on top of a Chrome\n page containing Ultra HDR. The UI colors are mostly preserved in the new\n implementation, and the image is no longer clipped.\n\n | Android 14 | Android 15-QPR1 |\n |------------|-----------------|\n | | |\n\n **Figure 1.** Comparison of Android 14 and Android 15-QPR1 for Example 1.\n- Example 2 is a screenshot of an HDR video overlaid on top of **Settings**\n with subsequent screenshots. In Android 14, the screenshot colors are\n successively darker. In Android 15-QPR1, the tonemapper correctly replicates and\n preserves the UI colors.\n\n | Android 14 | Android 15-QPR1 |\n |------------|-----------------|\n | | |\n\n **Figure 2.** Comparison of Android 14 and Android 15-QPR1 for Example 2.\n\n### Android 16\n\nSimilar to [Ultra HDR](https://developer.android.com/media/platform/hdr-image-format),\nHDR screenshots store a gainmap in the screenshot file to recover the HDR\nrepresentation during rendering. However, unlike Ultra HDR, the screenshot\nremains in a PNG format for backward compatibility with systems that ingest\nPNG screenshots.\n\nThe screenshot generation details are as follows:\n\n- When HDR content is displayed on the device, a screenshot is generated using FP16 pixels.\n- The local tone-mapper described in [Android 15-QPR1](/docs/core/graphics/hdr-screenshots#android15qpr-hdr-shot) generates an 8-bit base SDR rendition.\n- An 8-bit gainmap is produced by combining the SDR base rendition with the HDR rendition.\n- The SDR base rendition and the gainmap are encoded into a single PNG file.\n\nThe PNG encoding details are as follows:\n\n- The gainmap is encoded as a PNG image, which includes a gmAP chunk, containing the [ISO 21496-1](https://www.iso.org/standard/86775.html) metadata for the gainmap.\n- The SDR base rendition is encoded as a PNG image, which includes a gmAP chunk, containing the version of the [ISO 21496-1](https://www.iso.org/standard/86775.html) metadata. This PNG image also includes a gdAT chunk, containing the entirety of the encoded gainmap PNG.\n\nThe following figure shows the layout of the PNG chunks:\n\n**Figure 3.** Layout of the PNG chunks.\n\nWith Android 16, the PNG codec supports both encoding\nand decoding of these PNGs. Apps can display a PNG with a gainmap in the same\nmanner as [Ultra HDR](https://developer.android.com/media/grow/ultra-hdr/display)."]]