一張圖片的平均色彩,是從解碼後的影像中取樣像素後,所算出的單一以 Alpha 為權重的 RGB 算術平均,並以六位數 HEX 值與十進位 RGB 三元組表示。這個數字在你的瀏覽器中運算,針對你選擇的檔案回傳,且絕不代表最常出現的色彩、主體或任何知覺加權。它只是對「通過取樣與透明規則」之通道的純粹平均,而這個定義也正是大多數錯誤的起點。讀者常預期結果會像主色擷取工具、吸色器或知覺混色那樣運作,並把任何偏差都視為工具的瑕疵。實際上,結果遵循一份有文件記載的數學合約:完全透明的像素不貢獻任何值,部分透明的像素依其 Alpha 比例貢獻,較大的來源影像會在平均前被縮取樣到固定的畫布預算,每個通道僅會從 0 到 255 四捨五入一次到最接近的整數。一旦這個合約清楚,輸出就不再令人意外。Image Average Color Finder 直接公開了這份合約,因此你在同一檔案、同一瀏覽器、同一尺寸下複製到的數字是可重現的。

how do i avoid mistakes when i use average color from image
使用圖片平均色彩時如何避免錯誤

「平均色彩」實際上計算的是什麼

平均色彩是單一數值,而非調色盤。Image Average Color Finder 使用以 Alpha 為權重的算術平均:對於每個 Alpha 不為零的取樣像素,其紅、綠、藍通道都會乘上該像素的 Alpha 值,加權後的通道總和再除以 Alpha 總和,結果四捨五入到 0 到 255 之間最接近的整數。完全透明的像素不貢獻任何值,因為其儲存的 RGB 通道不可見,且可能含有任意的編碼器資料。部分透明的像素則依其不透明度按比例貢獻。

用一個簡單的例子來看規則如何運作。假設有一列 2 像素,像素 A 是不透明紅色 rgba(255, 0, 0, 255),像素 B 是半透明藍色 rgba(0, 0, 255, 128)。Alpha 總和為 255 + 128 = 383。加權紅色總和為 255 × 255 + 0 × 128 = 65,025。加權綠色總和為 0。加權藍色總和為 0 × 255 + 255 × 128 = 32,640。將各加權總和除以 Alpha 總和並四捨五入,得到紅色 = 65,025 ÷ 383 ≈ 169.8 → 170,綠色 = 0,藍色 = 32,640 ÷ 383 ≈ 85.2 → 85。結果為 rgb(170, 0, 85),也就是 #AA0055,一個來源檔案中並不存在的偏紫色單一值。這就是算術平均的文件化行為,也是為什麼兩個等權重、不同顏色的像素會產生第三種顏色,而非其中之一的輸入色。

MDN 的 getImageData 條目說明了用來讀取這些資料的 RGBA 像素介面,而 WHATWG HTML canvas 像素操作規範則定義了此實作所對應的 canvas 色彩空間。加權規則與限制是刻意在該介面上方所做、有文件記載的產品選擇。

平均色彩數字在哪裡會出錯

錯誤通常來自於假設平均色彩的行為像另一種工具。最常見的模式記載如下。

  • 把平均當成主色。主色是影像中最常出現的色彩;平均則是單一的算術平均值。兩個等權重的紅色與藍色像素會產生一個紫色平均,即使來源中並不存在紫色像素。如果你需要最常出現的色彩,請使用調色盤工具。
  • 預期小面積點綴色會保留。小面積的明亮點綴可能被大面積的中性背景稀釋,因為每個像素對平均的貢獻是均等的。一張 95% 為白色、5% 為亮橘色的照片,平均後會是偏暖的近白色,而非橘色。
  • 忘記透明度。完全透明的像素不貢獻任何值,因為規則會忽略它們,所以透明的畫布區域不會稀釋結果。部分透明的像素依其 Alpha 按比例貢獻,因此半透明的邊緣或淡化的疊加層,會把平均拉離肉眼所讀到的顏色。
  • 忽略縮取樣。較大的解碼後影像會按比例縮放,使分析畫布維持在或低於 1,048,576 像素。在或低於該預算內的影像,會以其解碼尺寸讀取。因此 HEX 描述的是一份具代表性的畫布取樣,來源與取樣尺寸會一併顯示,讓這項近似是可見的而非隱藏的。
  • 假設為知覺式運算。此平均值是在 8 位元通道空間中的算術平均。Gamma 感知式、知覺式或色彩管理式的運算可能會回傳不同的值;以全解析度取樣或使用動畫影像不同畫格的其他程式,也可能回傳不同的值。
  • 把數值用於錯誤的目的。單一平均值並不能作為品牌一致性、無障礙對比、印刷相符、油漆相符或知覺相似性的證明。不同的檢查需要不同的工具。

三個步驟取得可靠的平均值

為避免上述大多數錯誤,請依照以下流程使用 Image Average Color Finder。

  1. 選擇一個不超過 20 MB 的支援影像。所選檔案不得為空,必須使用瀏覽器支援的影像 MIME 類型(PNG、JPEG、WebP、GIF、BMP 或 AVIF),且大小不超過 20 MB。解碼後,長寬任一邊不得超過 20,000 像素,總像素不得超過 4,000 萬。這些限制能降低小壓縮檔在解碼後膨脹為過大畫布記憶體的風險。
  2. 等待本機解碼並檢視 HEX、RGB、覆蓋率與取樣尺寸。檔案會在當前分頁中解碼,畫布上限為 1,048,576 像素,介面會同時顯示來源與取樣尺寸,讓你能看到實際被平均的內容。處理全程都在瀏覽器中進行,因此檔案與取樣像素不會被上傳到任何影像分析服務。
  3. 點擊 HEX 值以複製它,然後在預期的設計情境中驗證色塊。預覽色塊直接使用計算出的 HEX,可用於快速的合理性檢查;外觀仍會受顯示器、瀏覽器、主題環境與人眼適應影響,因此請把數值貼入實際的設計中,而非僅信任色塊本身。若你的瀏覽器封鎖剪貼簿存取,數值仍會保持可見且可選取,且介面不會虛偽地宣稱複製成功。

記錄輸入檔案、瀏覽器、所顯示的來源與取樣尺寸,以及回傳值,以利於可重現的設計工作。複製的數值永遠嚴格是一個井字號後接六個小寫十六進位數字。

當平均色彩是錯誤的工具時

本工具回傳的單一平均值,最適合用於粗略的背景相符、佔位樣式、縮圖摘要、設計盤點與快速的視覺比較。它無法取代針對不同問題所設計的工具。下表整理了讀者容易誤用平均的情境,以及更貼合實際目標的工具。

你的目標 為何平均值可能誤導 此目標的更佳工具
挑選品牌點綴色 小面積的明亮點綴會被周圍像素稀釋 Color Palette Generator
驗證文字對比 單一平均值無法同時代表前景與背景 Color Contrast Checker
量測知覺差異 算術平均忽略知覺加權 Color Difference Calculator
擷取多色調色盤 單一數值無法代表多種相異色彩 Color Palette Generator
比對油漆或印刷輸出 螢幕上的算術結果不等於實體顏料的相符 具備色彩管理、以儀器為基礎的工作流程

Color Palette Generator 能區分不同的色彩,Color Contrast Checker 會對所選的一對顏色套用既定的對比比例,Color Difference Calculator 則會在兩個不透明 HEX 值之間回傳一個依標準定義的度量。當目標是替整張影像取得一個代表性顏色時,平均是對的工具;當目標是其他任何事時,請改用專屬工具。

可重現性與驗證

一旦你記錄了輸入條件,大多數錯誤就會變得不可見。螢幕上的數字取決於五件事:檔案位元組、瀏覽器、來源尺寸、取樣尺寸,以及解碼時所取得的動畫畫格。兩個程式可能對同一檔案回傳不同的值,因為它們在這五項輸入中有任一項不同:全解析度取樣與縮取樣、Gamma 感知式與算術式運算、第一畫格與最後一畫格,或不同的色彩管理。

請擷取檔名、瀏覽器與版本、所顯示的來源與取樣尺寸,以及回傳的 HEX。若你需要在設計審查中為數字辯護,或在數月後重現它,這四項事實就足以偵測任何漂移。Image Average Color Finder 在介面中顯示來源與取樣尺寸,讓這份紀錄只需一個點擊即可取得,而非藏於設定面板中。工具不會保留或檢查 EXIF、ICC 設定檔、相機中繼資料、僅供顯示的檔名以外的資訊,或隱藏的文字區塊,也不會修改或匯出來源檔案,因此你所看到的,正是實際被平均的內容。

最後一道防線:永遠不要把單一平均值當作品牌一致性、無障礙對比、印刷相符、油漆相符或知覺相似性的證明。文字對比請使用 Color Contrast Checker,色彩差異度量請使用 Color Difference Calculator,並把平均值保留給它被設計用來產生的粗略、影像層級摘要。

延伸閱讀:從圖片取得網頁安全色:擷取任何取樣 HEX。

延伸閱讀:如何檢查圖片的平均色彩結果。