焦點

蝦毀?不需要一張圖片,只要一個像素就能讓Android手機故障!

文.圖/Lucky 2020-06-05 12:29:22
相信這陣子應該不少玩家注意到一個新聞,就是只要將一張特殊的照片設定成Android手機的桌布,手機就會立刻當機,必須整個重置,然而國外有網友解析了這張照片和Android系統之後發現,其實只需要一個像素就能癱瘓整支手機。

就是這張圖,若設成Android手機的桌面圖案,就會造成BootLoop死機狀態,千萬別嘗試!


不是照片受詛咒,而是照片的色彩標準太特殊
關於照片會讓手機死機的原因,並不是因為照片被植入病毒或是受到詛咒,而是因為照片使用了一個非常罕見的色彩標準─「ProPhoto RGB」。這個由Kodak所制定特殊色彩空間,其最大的特色就是它的色彩涵蓋範圍非常的廣,甚至有13%的色彩編碼落在人眼無法看見的區域。

ProPhoto RGB色彩涵蓋範圍非常的大,甚至有部分色彩已經超出人眼可辨識的區間。


由於在整個數位影像市場上,能夠記錄與顯示ProPhoto RGB這般巨大的色彩涵蓋空間的器材非常的稀少,自然也就使得許多裝置根本就不支援該色彩標準,這當中也包含了Android系統。

Android的色彩管理造成的死亡迴圈
Android系統在對於色彩管理方面,並不是由系統去進行控制,而是由每個App本身去自行處理,如果該程式能夠自動根據不同色彩標準去調整,如相簿、網頁瀏覽器等,即使面對不相容的色彩標準,也能夠自動將色彩編碼轉換成相容的標準,雖然可能導致嚴重色偏,但至少還能顯示出來,這也是為什麼玩家將照片下載到手機時,還能正常觀看而不會當機的原因。

即使在PC上,不同的程式的色彩管理也不同,像是這張「死亡桌布」在Chrome中和Windows預設照片App的色彩顯示就不同。


但如果碰上無法自動調整的程式呢?關於這一點每一家系統作法可能都不一樣,在Android系統中有一套「廣域相容」的顯示公式,其中一組公式會直接粗暴的將每個色彩編碼直接換算,以用來作為色彩「視覺」亮度的參考,其公式如下:

0.2126*(紅色編碼)+0.7152*(綠色編碼)+0.0722*(藍色編碼)
上述的這套公式的好處就是可以無視所有色彩標準,通通進行轉換,省去開發者在開發應用程式對色彩定義和調整的麻煩,然而這套公式其實還有幾個附加條件,也正是這幾個附加條件造成了這次死機風波。

紅、綠、藍每個色彩的編碼必須先轉換成為0~255之間的數值,且最終的色彩亦只能在0~255之間。
紅、藍、綠換算後的數值在相加前,小數點無條件進位成整數。
因為這兩個條件的加入,造成了一旦有一個顏色在換算之後超出了255,就會造成了系統錯誤,而好巧不巧,這張受詛咒的照片就存在了一個這樣的顏色,其紅:藍:綠的色彩編碼為:255:243:255。

在ProPhoto RGB中的這個色彩,是造成手機死機的原因。


將該編碼導入系統的色彩換算公式就會得到:

(0.2126*255)+(0.0722*243)+(0.7152*255)=54.213+17.5446+182.376
所有小數點在相加前須無條件進位
換算後為55+18+183=256
256不在0~255的範圍,數值異常
面對異常的數值,程式可能就會崩潰,造成俗稱的閃退,所以如果玩家把這個「錯誤」色彩設定成桌布,便會造成桌面程式因為錯誤而關閉,但此時系統會將「桌面程式關閉」視為錯誤,而重啟桌面程式。於是乎程式錯誤關閉,系統重啟程式,程式又因錯誤而關閉的死亡迴圈就這樣誕生了。

Google已經著手修正中
面對這次死亡桌布事件,Google已經正在著手處理,並會發送更新檔來解決這個問題,至於已經因為好奇心而造成機器死機的玩家,可以藉由一直壓住「電源鍵」+「音量鍵-」進行強迫重啟,並在開機畫面時繼續按壓相同的組合鍵,便能進入「工程模式」,透過裡面的復原選項,將手機重設來讓手機復原,當然這樣的做法將造成手機內部的資料全部消失,所以最好還是勸各位玩家「不做死,就不會死」囉!



★沒新聞心癢?加入PCDIY!官方Telegram頻道:https://t.me/PCDIY
☆「找嘸人」聊科技?加入PCDIY! Telegram討論群:https://t.me/PCDIY_Chat


發表您的看法

請勿張貼任何涉及冒名、人身攻擊、情緒謾罵、或內容涉及非法的言論。

請勿張貼任何帶有商業或宣傳、廣告用途的垃圾內容及連結。

請勿侵犯個人隱私權,將他人資料公開張貼在留言版內。

請勿重複留言(包括跨版重複留言)或發表與各文章主題無關的文章。

請勿張貼涉及未經證實或明顯傷害個人名譽或企業形象聲譽的文章。

您在留言版發表的內容需自負言論之法律責任,所有言論不代表PCDIY!雜誌立場,違反上述規定之留言,PCDIY!雜誌有權逕行刪除您的留言。

最近新增