色彩反轉可以在瀏覽器中完成,無需上傳任何檔案,做法是在每個像素上執行確定性的位元組層級通道運算:紅色、綠色和藍色的位元組分別變成 255 減去原始值,而 alpha 通道則原封不動地複製。反轉圖片色彩工具透過讀取 PNG、JPEG、GIF 或 WebP 的原始位元組來確認輸入容器,任何結構驗證失敗的檔案都會被拒絕,接著透過瀏覽器本身的影像解碼器解碼檔案,並以完整 PNG 匯出結果,讓您以原始尺寸下載。Canvas 所暴露的每個 RGBA 欄位都會被處理,包括 alpha 為零的 RGB 欄位,且輸出絕不會被靜默地縮放、裁剪、抽樣或部分處理。PNG 匯出會保留原始像素尺寸,因此分享前不會重新取樣或裁剪。EXIF、GPS 座標、ICC 設定檔、註解與出處等來源中繼資料不會帶到匯出檔案,這是維持完全在本機處理所必須付出的小小代價。正是確定性通道運算、經驗證的容器檢查以及本機處理的結合,讓這個工具足以成為基於上傳的反轉工具、需要安裝的桌面編輯器,以及格式支援有限的行動應用程式的可靠替代方案。

什麼算是標準色彩反轉工具的「替代方案」
大多數搜尋反轉圖片色彩替代方案的讀者,都已經試過至少一個常見選項。Photoshop、GIMP 和 Paint.NET 等桌面影像編輯器需要安裝,而且往往需要付費授權。醒圖、Snapseed 或 NegativeImage 等行動應用程式在觸控式快速編輯方面表現良好,但能接受的格式有限,而且可能在匯出時嵌入額外的中繼資料。線上反轉工具通常會將檔案上傳到遠端伺服器,這對於尚未分享的照片會引發明顯的隱私疑慮。包括 Microsoft Paint 的 Ctrl+I 快速鍵在內的內建作業系統工具,只能處理少數幾種格式,而且可能直接覆寫原始檔案。
基於瀏覽器的替代方案會犧牲遮罩、圖層、曲線和非破壞性調整等進階編輯器功能,換來四項對不同族群重要的優勢:無需安裝、無需上傳、易於推理的確定性位元組層級通道運算,以及在一處統一支援四種熱門格式。對於希望每次都得到相同效果,且不想讓照片存放在第三方伺服器上的使用者來說,這樣的取捨通常是值得的。
通道反轉規則如何運作
位元組層級的色彩反轉,代表每個通道剛好只有一個公式:out_R 等於 255 減去 in_R,out_G 等於 255 減去 in_G,out_B 等於 255 減去 in_B。Alpha 原封不動地複製。套用兩次運算會回到原始位元組,這使得該規則具備自我檢查的特性,也便於與任何參考影像進行驗證。
單一像素的計算範例:如果來源像素為 RGB(120, 200, 50),則輸出像素變為 RGB(255 − 120, 255 − 200, 255 − 50) = RGB(135, 55, 205)。Alpha 通道會原封不動地複製,不做任何轉換。相同的計算會在瀏覽器解碼器交給工具的每個像素上執行。
| 來源色彩 | 通道位元組值 | 輸出色彩 |
|---|---|---|
| 黑色 | 0, 0, 0 | 白色 (255, 255, 255) |
| 白色 | 255, 255, 255 | 黑色 (0, 0, 0) |
| 紅色 | 255, 0, 0 | 青色 (0, 255, 255) |
| 綠色 | 0, 255, 0 | 洋紅 (255, 0, 255) |
| 藍色 | 0, 0, 255 | 黃色 (255, 255, 0) |
重要的是必須指出這個規則不是什麼。瀏覽器反轉工具是位元組通道的視覺效果,並非色彩管理轉換,並非感知互補色模型,也並非底片負片修復。該工具不會線性化 gamma、不會建立人類感知互補色模型、不會去除橙色遮罩、不會平衡掃描底片、不會校正曝光,也不會執行色調分級。如果您需要上述任何功能,請使用專門的影像編輯器。
如何在瀏覽器中反轉圖片色彩
- 開啟「反轉圖片色彩」頁面,從您的裝置選擇 PNG、JPEG、GIF 或 WebP 檔案。工具會先檢查回報的檔案大小,接著檢查實際的 ArrayBuffer 長度,以 15 MiB 為上限。
- 等待位元組容器偵測。工具會忽略檔名與作業系統的 MIME 標籤,自行讀取原始位元組。PNG 需要完整的簽章、第一個 IHDR 結構,以及結尾的 IEND。JPEG 需要 SOI、緊接其後的標記,以及結尾的 EOI。GIF 需要 GIF87a 或 GIF89a、足夠的邏輯螢幕結構,以及結尾標記。WebP 需要精確的 RIFF 位元組計數、WEBP 標記,以及有界的 VP8、VP8L 或 VP8X 第一個區塊。魔術位元組被截斷或任意重新命名的檔案,會在任何 Canvas 處理開始之前就失敗。
- 讓瀏覽器透過 createImageBitmap 解碼經驗證的 Blob,並回報實際的正向尺寸。每個解碼後的邊長上限為 8,192 像素,總面積上限為 24,000,000 像素。超出這些限制的位元組、邊長像素或像素面積都會被拒絕。
- 檢視原始尺寸的來源預覽,然後執行反轉。Canvas 所暴露的每個 RGBA 欄位都會以 255 − R、255 − G、255 − B 進行處理,並複製 alpha,即使該 RGB 欄位的 alpha 為零也是如此。
- 並排比較來源與輸出。輸出會透過瀏覽器的 HTMLCanvasElement.toBlob 方法,以原始尺寸編碼為完整 PNG。在任何下載網址發布之前,空白的 Blob、無效的大小,或超過 32 MiB 的輸出都會被拒絕。
- 下載靜態 PNG。儲存結果不會保留 EXIF、GPS、ICC 設定檔、動畫或其他來源中繼資料,因此在這些屬性很重要時,請保留原始檔案。
檔案驗證、大小上限與像素限制
| 限制 | 邊界 |
|---|---|
| 輸入檔案大小 | 15 MiB(回報值與實際 ArrayBuffer) |
| 解碼後邊長(寬度或高度) | 8,192 像素 |
| 解碼後像素總面積 | 24,000,000 像素 |
| 輸出 PNG 大小 | 32 MiB |
這些限制是獨立強制執行的,並不可互換。12,000 像素高的全景 JPEG 可以符合檔案大小限制,卻超出邊長限制,根本進不到畫布。反過來說,4,000 × 4,000 的 PNG 可以同時符合邊長與面積限制,卻仍超過 15 MiB 的檔案預算。每項檢查都會在下個步驟之前進行,因此通過一項檢查的檔案並不會被假設為也會通過下一項。
輸出上限刻意與輸入上限分開,因為 PNG 是無損格式,往往會讓照片、雜訊掃描影像和細節豐富的圖示變大。JPEG、GIF 或 WebP 來源可能輕易產生比原始檔案更大的 PNG 輸出,這就是為什麼輸入與輸出預算必須分別評估,而不能共用。
透明像素、隱藏的 RGB 與動畫
瀏覽器解碼器所暴露的每個 RGB 欄位都會被反轉,即使 alpha 為零也是如此。演算法不會略過透明像素,也不會將隱藏的 RGB 強制設為黑色。話雖如此,完全透明的色彩按定義是不可見的,而且瀏覽器的解碼器或 Canvas 可能在 getImageData 回傳之前,將視覺上隱藏的 RGB 正規化,因此工具會轉換 Canvas 實際提供的位元組。它無法還原從未進入 ImageData 的隱藏來源檔案通道資料。
半透明的 alpha 值會原封不動地通過。如果您的影像在完全透明區域內帶有重要的色彩資訊,而這些資訊對往返處理至關重要,請在執行反轉之前,透過能保留隱藏 RGB 的路徑匯出來源。
動畫 GIF 與動畫 WebP 輸入只會使用瀏覽器解碼後的第一幀,並轉為單一靜態 PNG。後續的幀、幀時間、循環次數、色盤與銷毀行為都不會保留。請將匯出的 PNG 視為第一幀的靜態擷取,並在動畫很重要時保留原始檔案。
這個瀏覽器反轉工具不適用的情境
這個工具有意設計得很窄。它並非色彩管理轉換,並非底片負片修復,也並非感知互補色模型。SVG、AVIF、HEIC、BMP、TIFF、PDF 等其他格式都不在支援範圍內,即使重新命名為支援的副檔名也一樣;且成功解碼並不等於惡意軟體分析、內容審核、作者身分驗證,也不能證明影像安全或真實。
若需要另一種同樣在本機執行的轉換,圖片翻轉工具可在不上傳任何檔案的情況下,以完整解析度水平或垂直鏡像影像。若要產生灰階版本而非真正的彩色負片,黑白照片轉換工具會在瀏覽器內套用有文件記載的 W3C 通道矩陣。這些替代方案都共用相同的本機處理保證,因此您可以將它們與反轉工具串連使用,完全不必將檔案移出您的裝置。
如果您正在權衡選項,圖片色彩選擇器詳解:運作方式對此有詳細說明。
如果您正在權衡選項,圖片網格切割替代方案:本機、無損切割對此有詳細說明。