經過 alpha 權重的平均色彩會根據透明度來處理透明像素:完全透明的像素會從計算中排除,而部分透明的像素則會依照其 alpha 值按比例貢獻。影像平均色彩尋找器在瀏覽器中實作了這項規則,方式是解碼影像、將像素取樣到畫布上、把每個可見像素的紅、綠、藍通道乘上該像素的 alpha 值,並在四捨五入為 0 到 255 之間的整數之前,先將總和除以 alpha 值的總和。由於完全透明區域後方儲存的 RGB 通道可能是任意的編碼器雜訊,而且實際上從未在畫面上顯示,若賦予它們任何權重,就會把代表色拉向毫無意義的資料。把部分透明度視為分數權重,可以讓羽化邊緣、柔和陰影以及圓角的 PNG 圖示在最終色塊中看起來更忠實。所回報的 alpha 涵蓋率,是取樣的 alpha 總和除以樣本中可能的最大 alpha,因此看一眼讀數就能知道來源實際貢獻了多少。

alpha 加權公式在實務上如何運作
這套運算方式與程式設計師直接針對 MDN 的 CanvasRenderingContext2D.getImageData 參考文件中描述的畫布像素緩衝區所撰寫的程式完全相同。對於每個 alpha 大於零的取樣像素,這個工具會把紅、綠、藍各通道乘上 alpha 值,在整個樣本中加總這些乘積,再將每個通道除以總 alpha,並且只在輸出階段才進行一次四捨五入,捨入為 0 到 255 之間的整數。四捨五入刻意只在最後做一次,是為了避免在轉成最終 HEX 值之前損失中間精度,而畫布像素資料一律以標準的 8 位元 RGBA 位元組來要求。所回報的涵蓋率數字讓權重機制一目了然:它是取樣的 alpha 總和除以該樣本可能承載的最大 alpha,這代表即使是每個像素都被技術上取樣的 50% 棋盤格,也只會回報 50% 的涵蓋率。涵蓋率讀數是確認 alpha 權重規則確實發揮作用的最快方式,因為涵蓋率低於 100% 就代表畫布上有相當一部分被略過或降低權重。
| 像素透明度狀態 | 在 alpha 加權平均中的處理方式 |
|---|---|
| 完全透明 (alpha = 0) | 排除;對通道總和與 alpha 總和皆無貢獻。 |
| 部分透明 (alpha = 1 至 254) | RGB 通道乘以 alpha;依不透明度比例貢獻。 |
| 完全不透明 (alpha = 255) | RGB 通道以完整權重加入總和;等同於係數為 1。 |
為何完全透明的像素會被排除
在每個完全透明的像素背後,都藏著一組編碼器可以任意選擇的 RGB 三元組,而 PNG、WebP、GIF、BMP 與 AVIF 編碼器實際上也確實會針對相同的視覺結果挑選不同的數值。最佳化階段經常會把這些通道清為零,但有些則會保留為上一次繪製的色彩、平坦填色、除錯高亮,或壓縮後留下的隨機位元組。由於這些數值從未被顯示,若在平均中給予權重,就會讓一塊隱藏且無意義的緩衝把結果拉離觀眾在頁面上實際看見的樣子。略過 alpha 為零的像素可一次消除整個類別的錯誤,也符合「看不見的像素根本沒有顏色」的視覺直覺。因此,裁切規則屬於品質決策而非捷徑,也是設計師複製 HEX 值時能放心相信它描述的是畫面上的內容,而非藏在底下的東西的原因。把透明度視為嚴格的零也能讓數學在重新編碼時保持穩定:只要可見像素不變,以不同工具重新儲存的檔案仍會產生相同的 HEX。
部分透明會加入比例權重
當像素半透明時,它的顏色確實有一部分顯示在畫面上,而公式會透過將每個通道乘上 alpha 係數來表彰這一點。想像一個兩像素的樣本:像素 A 是完全不透明的紅 rgb(255, 0, 0, 255),像素 B 是半透明的藍 rgba(0, 0, 255, 128)。加權後的總和變成 R = 255 × 255 + 0 × 128 = 65,025、G = 0 × 255 + 0 × 128 = 0、B = 0 × 255 + 255 × 128 = 32,640,總 alpha 為 255 + 128 = 383。把每個通道除以總 alpha 後得到 R ≈ 169.78、G = 0、B ≈ 85.22,四捨五入後為 rgb(170, 0, 85) — 一種深洋紅色。請注意,即使藍色只有半透明,仍然會明顯把平均拉向紫色,而任一色彩的樣本數量加倍,都會把結果往顯而易見的方向移動。同一套機制在藍色像素換成另一個紅色像素時會產生純紅色,而當紅色像素完全被拿掉時則會產生強度減半的純藍色。逐通道縮放這項機制讓規則容易離線重現,也說明了為何兩個面積相同、透明度不同的像素永遠不會貢獻相同的權重。
如何找出影像的 alpha 加權平均色彩
這個工具完全在目前的瀏覽器分頁中執行,因此檔案與取樣像素並不會上傳到任何分析服務。完整的執行流程如下:
- 在目前的桌上型或行動瀏覽器中開啟影像平均色彩尋找器。
- 選擇大小在 20 MB 以內、格式為 PNG、JPEG、WebP、GIF、BMP 或 AVIF 的支援檔案;動畫檔案會從瀏覽器解碼的第一個影格讀取。
- 等待本機解碼完成並檢視讀數:六位數 HEX、十進位 RGB、alpha 涵蓋率,以及來源與樣本尺寸。
- 點擊可見的 HEX 值即可複製;若瀏覽器封鎖剪貼簿存取,該值仍會留在畫面上可供選取。
- 把 HEX 貼到你的樣式表、設計權杖或縮圖預留位置中,然後對照預期的設計情境驗證色塊。
什麼時候單一平均值是錯誤的工具
經過 alpha 權重的算術平均只能回答一個狹隘的問題:哪一個顏色最能代表影像的可見部分。它不是主要色彩、不是調色盤,而且在可預見的情況下會悄悄誤導。紅與藍兩個權重相同的像素永遠會平均成紫色,即使來源中根本沒有紫色像素;而在一大片中性背景上一個小而明亮的強調色,會被稀釋到幾乎等於中性值。如果目標是辨識反覆出現的調色盤、把主體與背景分開,或為了品牌萃取拉出強調色,正確的工具是調色盤產生器,它一次會回傳多個色塊。若目標是快速檢查文字與背景的對比,則應把 HEX 交給色彩對比檢查器,而不是依賴平均值來代表對比。至於需要色塊與目標品牌色之間的明確色彩差異指標,色彩差異計算機會提供數值的 CIEDE2000 讀數,而不是憑感覺估算。單一的 alpha 加權平均值最適合用於粗略的背景配對、預留位置的樣式設定、縮圖摘要、設計盤點以及快速的視覺比較。
可能讓結果偏移的限制與注意事項
所回報的數值是取樣畫布的平均,不一定等同於每個來源像素的平均。像素數在 1,048,576 以下的影像會以完整解碼解析度處理;更大的影像則會按比例縮放,使分析畫布維持在該像素預算以內或以下。瀏覽器在縮放時的內插可能會小幅推移通道,而讀數會同時顯示來源與樣本尺寸,讓這項近似過程顯而易見而非隱而不宣。輸入端設有 20 MB 檔案上限、解碼後每邊 20,000 像素上限,以及 4,000 萬像素的來源上限,以保持畫布記憶體的可預測性。畫布像素存取一律以標準 8 位元 RGBA 資料要求,因此任何瀏覽器的色彩管理、方向處理、寬色域轉換或動畫時機,都可能讓不同瀏覽器之間的結果略有差異。HTML 畫布像素操作規範描述了此處使用的 RGBA 介面,而權重規則是有意識的產品選擇,並已留下文件以便能離線重現這套運算。為了可重現的設計工作,請記錄檔名、瀏覽器、顯示的來源與樣本尺寸,以及回傳的 HEX,並把這個單一數字當作起點,而非品牌合規、無障礙對比或印刷配對的證明。
若你在權衡選項,從影像取樣、比較:色彩差異計算機對此有詳細說明。
若你在權衡選項,使用平均色彩工具時影像會離開我的裝置嗎?對此有詳細說明。