Платим блогерам
Блоги
Splash Attack
Оказалось что байки про обои, убивающие телефон были правдивы.

реклама

За последнюю неделю по твиттеру и прочим социальным сетям прокатилась волна предупреждений от разнообразных пользователей о том, что не стоит ставить в качестве обоев для своего смартфона следующую картинку:

реклама

Часть пользователей восприняли эти предупреждения скептически, другие же заявляли, что попробовали поставить это изображение и с их телефоном всё в порядке. Но были и те, кто утверждал, что их смартфон также пострадал от этой картинки. Известный блогер Mrwhosetheboss решил собственноручно разобраться в ситуации и развеять миф. Для этого он нашёл на фотостоке исходное изображение в разрешении 6144х3950, сделанное на профессиональную камеру Nikon D850, из которого были сделаны печально известные обои.

Он подогнал разрешение под стандартные для Android 1440x2560 и установил изображение фоном на свой Samsung Galaxy S20 Ultra. Таким образом он хотел продемонстрировать, что проблема была в конкретном файле обоев, в код которого каким-то образом встроили вредоносный скрипт. Но вопреки его ожиданиям, самодельные обои оказались ничуть не безопаснее, и новенький смартфон превратился в кирпич.

И причиной тому стал не вредоносный код или происки русских хакеров, а куда более интересный технический момент. Дело в том, что смартфоны на Android способны воспроизводить далеко не всю палитру цветов, видимых человеческому глазу. Они ограничены стандартом представления цветового спектра sRGB для большей унификации. Но существует множество других подобных стандартов, при конвертации в которые цветовой спектр будет изменяться. К примеру, при конвертации из sRGB в Adobe RGB цвета у картинки будут ярче по причине более широкого цветового спектра у второго формата.

Android не умеет воспринимать другие форматы и конвертирует любое фото в знакомый ему sRGB. И именно здесь закралась ошибка. В случае с конкретно этим фото цветовой движок Google не смог конвертировать всего один пиксель из-за его специфической яркости. 

Стандартная логика Android считает что сумма значений цветового баланса красного, синего и зелёного цветов для пикселя не должна превышать значение в 255. Вот только в случае с тем самым злополучным пикселем значение зелёного цвета равно 182.376, красного - 54.213 и синего - 17.5446. В сумме это даёт примерно 254, но движок Google использует для цифр округление в большую сторону и в итоге 182.376 превращается в 183, 54.213 в 55, 17.5446 в 18. В сумме эти числа дают значение в 256, что выходит за теоретический максимум для Android-систем. В результате аппарат зависает в бесконечной петле ошибок.

К счастью далеко не все смартфоны на Android используют базовый цветовой движок Google, а в следующих версиях операционной системы скорее всего добавят решение этой проблемы.


Источник: youtu.be
8
Показать комментарии (8)

Популярные новости

Сейчас обсуждают