这张图片是如何让 Android 手机变砖的?

2025-05-27

这张图片是如何让 Android 手机变砖的?

几天前这条推文火了,
替代文本

人们还是尝试了,结果如下:
替代文本

那么为什么这张美丽的风景图片会让安卓手机变卡呢?

替代文本

答案在于一个像素和基本的数学。

一个像素由一种颜色组成,一种颜色由三种基本颜色组成,即红色、绿色、蓝色RGB

你可能还记得 CSS 中, R:G:B的典型范围在 0 - 255 之间,Android 系统可以很好地处理。但是,Android 系统无法识别非常大范围的色彩空间,因此会将其转换为 RGB。

什么是色彩空间?它基本上是这样的:
替代文本

正如您所见,与其他颜色空间相比,android sRGB 空间较窄,但这有什么关系呢?

上面的图像是在 Prophoto RGB 色彩空间中捕获的,因此当您在图库中打开图像时,android 会尝试将图像转换为 sRGB 色彩空间,问题就在这里。

甚至 dev.to 也将其转换为相关的颜色空间:
替代文本

该图像中有一个像素导致了此问题。

替代文本

因此,当 Android 遇到不支持其色彩空间的照片时,它会按照以下公式修改图像:

替代文本

并且其总体结果必须小于 255。

但对于一个像素来说,RGB值是:
替代文本

算一下,
替代文本

但是 android 不会采用浮点值,而是对数字进行四舍五入:
替代文本

由于超出了最大限制 256,Android 会报错。当我们打开图库中的图片时,Android 会遇到错误,甚至可能会关闭图库。

但是当我们将图片设置为壁纸时,就像设置了一个无限的错误循环。最终,图片会溢出,导致手机崩溃。
替代文本

修好了嗎?

   pixel_value = Math.min(255,res);
   //might be more complicated than this but this is my best guess
Enter fullscreen mode Exit fullscreen mode

太疯狂了吧?一个像素就能让我们的手机崩溃。

希望你喜欢我的文章。下次再见 :)

来源: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

文章来源:https://dev.to/akhilpokle/how-did-this-image-brick-android-phones-5hd0
PREV
Sass:插值和嵌套 🎁 插值嵌套规则
NEXT
网页设计简单指南