这张图片是如何让 Android 手机变砖的?
那么为什么这张美丽的风景图片会让安卓手机变卡呢?
答案在于一个像素和基本的数学。
一个像素由一种颜色组成,一种颜色由三种基本颜色组成,即红色、绿色、蓝色或RGB。
你可能还记得 CSS 中, R:G:B的典型范围在 0 - 255 之间,Android 系统可以很好地处理。但是,Android 系统无法识别非常大范围的色彩空间,因此会将其转换为 RGB。
正如您所见,与其他颜色空间相比,android sRGB 空间较窄,但这有什么关系呢?
上面的图像是在 Prophoto RGB 色彩空间中捕获的,因此当您在图库中打开图像时,android 会尝试将图像转换为 sRGB 色彩空间,问题就在这里。
该图像中有一个像素导致了此问题。
因此,当 Android 遇到不支持其色彩空间的照片时,它会按照以下公式修改图像:
并且其总体结果必须小于 255。
但是 android 不会采用浮点值,而是对数字进行四舍五入:
由于超出了最大限制 256,Android 会报错。当我们打开图库中的图片时,Android 会遇到错误,甚至可能会关闭图库。
但是当我们将图片设置为壁纸时,就像设置了一个无限的错误循环。最终,图片会溢出,导致手机崩溃。
修好了嗎?
pixel_value = Math.min(255,res);
//might be more complicated than this but this is my best guess
太疯狂了吧?一个像素就能让我们的手机崩溃。
希望你喜欢我的文章。下次再见 :)
来源:https://twitter.com/UniverseIce/status/1266943909499826176
https://www.youtube.com/watch?v=iXKvwPjCGnY
https://del.dog/suthokuxid.log
https://twitter.com/HrX2003/status/1267049418659901440
https://hdqwalls.com/wallpaper/5120x2880/sunset-at-st-mary-lake-glacier-national-park-5k