你輸出一張照片,看起來沒問題。你上傳它,在網站上顏色變得平淡。或者反過來:你手機的截圖在別人筆電上顯得刺眼地過飽和。中間沒有任何編輯。像素一個都沒變。
變的是解讀方式,而要理解為什麼,只需要一個概念。
一個像素存的是像 255, 0, 0 這樣的東西。很容易把它讀成「紅色」,但它不是。它的意思是這個系統能產生的最紅——而那實際上有多紅,完全取決於你說的是哪個系統。
色彩空間就是那個把這些數字變成真實顏色的定義。它精確指定最大值對應到哪個物理上的紅、綠、藍。換一個色彩空間,255, 0, 0 就變成另一個紅色——即使檔案裡沒有一個位元移動過。
整個問題就在這裡。同樣的數字,對照兩個不同的定義去讀,產生兩張不同的圖。
sRGB 在 1996 年標準化,是照那個年代的螢幕能做到的事建立的。它是最小公分母,至今仍是網頁的預設假設。它能重現的顏色範圍——它的色域——不大,而這正是它安全的原因:此後幾乎每一台顯示器都能完整顯示它。
Display P3 是現在多數手機、筆電和電視使用的較寬空間。它涵蓋的顏色比 sRGB 多約 25%,多出來的主要在飽和的紅色和綠色。一場鮮豔的夕陽或一片深綠的葉子,有些顏色存在於 P3 而在 sRGB 裡根本無法表示——它們會被截回最接近的 sRGB 顏色,而那更黯淡。
所以 P3 比較好,在「能描述更多」這個意義上。那和「對某個檔案來說是正確選擇」不是同一件事。
每一張圖都可以帶一個叫 ICC profile 的小標籤,說明它的數字屬於哪個色彩空間。色彩管理不過就是讀那個標籤、然後據此調整顯示的做法。
失敗只有一種形狀,但有兩個方向:
P3 資料、沒有 profile、被當成 sRGB 顯示。軟體看到飽和的數字,拿較窄的定義去解讀。出來的一切都過於鮮豔——皮膚像曬傷、紅色發光、綠色綠到像有輻射。這是遠遠最常見的版本,也是人們說一張圖「在網路上看起來怪怪的」時通常指的那個。
sRGB 資料被誤讀成 P3。相反:一切看起來褪色、帶點灰。
兩種情況裡圖都是完好的。壞掉的只有那個標籤——不是沒了就是錯了。
這一點值得單獨警告,因為人們是出於正當理由照做的,然後解釋不了結果。
為網頁優化圖片經常包括移除中繼資料——相機設定、GPS、時間戳——來省位元組。那是好建議。但ICC profile 也是中繼資料,而一個設定成「全部剝除」的工具會把它跟其他東西一起帶走。
檔案小了幾 KB,顏色壞了,而且如果你工作的那台機器的顯示器剛好符合那個假設,在你這邊是看不出來的。剝中繼資料時把色彩 profile 留著。它很小,而且它是唯一會改變圖片外觀的那一部分。
影像軟體提供兩個聽起來很像、做的事卻相反的操作。把它們搞混,就是顏色被永久破壞的方式。
轉換到某個色彩空間:軟體重新計算每一個像素,好讓你看到的顏色盡可能維持原樣。數字變了;外觀保住了。這幾乎永遠是你要的。
指定某個色彩空間:數字原封不動,換的是標籤。外觀會偏移,因為同樣的數字現在代表別的意思。
指定只在一種情況下有用:當一個檔案弄丟了它的 profile,而你知道它本來應該是什麼,指定正確的那個就還原了真相。誤用的時候——對一張 P3 的圖「指定 sRGB」而不是「轉換成 sRGB」——它會把錯的顏色烤進去。
你可能正在產出 P3 圖片而從沒選過。iPhone 的照片和截圖預設就是 P3。拍寬色域設定檔的現代相機也是。近期硬體上的螢幕錄影和設計軟體往往也是。
這就是為什麼這個問題會在從沒碰過色彩設定的人身上憑空出現:拍攝端變寬了,交付端還停在 sRGB,而唯一撐住這件事的,是一個中間某個工具可能悄悄丟掉的標籤。