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

invert image colors alternative
反轉圖片色彩替代方案:在本機執行

什麼算是標準色彩反轉工具的「替代方案」

大多數搜尋反轉圖片色彩替代方案的讀者,都已經試過至少一個常見選項。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、不會建立人類感知互補色模型、不會去除橙色遮罩、不會平衡掃描底片、不會校正曝光,也不會執行色調分級。如果您需要上述任何功能,請使用專門的影像編輯器。

如何在瀏覽器中反轉圖片色彩

  1. 開啟「反轉圖片色彩」頁面,從您的裝置選擇 PNG、JPEG、GIF 或 WebP 檔案。工具會先檢查回報的檔案大小,接著檢查實際的 ArrayBuffer 長度,以 15 MiB 為上限。
  2. 等待位元組容器偵測。工具會忽略檔名與作業系統的 MIME 標籤,自行讀取原始位元組。PNG 需要完整的簽章、第一個 IHDR 結構,以及結尾的 IEND。JPEG 需要 SOI、緊接其後的標記,以及結尾的 EOI。GIF 需要 GIF87a 或 GIF89a、足夠的邏輯螢幕結構,以及結尾標記。WebP 需要精確的 RIFF 位元組計數、WEBP 標記,以及有界的 VP8、VP8L 或 VP8X 第一個區塊。魔術位元組被截斷或任意重新命名的檔案,會在任何 Canvas 處理開始之前就失敗。
  3. 讓瀏覽器透過 createImageBitmap 解碼經驗證的 Blob,並回報實際的正向尺寸。每個解碼後的邊長上限為 8,192 像素,總面積上限為 24,000,000 像素。超出這些限制的位元組、邊長像素或像素面積都會被拒絕。
  4. 檢視原始尺寸的來源預覽,然後執行反轉。Canvas 所暴露的每個 RGBA 欄位都會以 255 − R、255 − G、255 − B 進行處理,並複製 alpha,即使該 RGB 欄位的 alpha 為零也是如此。
  5. 並排比較來源與輸出。輸出會透過瀏覽器的 HTMLCanvasElement.toBlob 方法,以原始尺寸編碼為完整 PNG。在任何下載網址發布之前,空白的 Blob、無效的大小,或超過 32 MiB 的輸出都會被拒絕。
  6. 下載靜態 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 通道矩陣。這些替代方案都共用相同的本機處理保證,因此您可以將它們與反轉工具串連使用,完全不必將檔案移出您的裝置。

如果您正在權衡選項,圖片色彩選擇器詳解:運作方式對此有詳細說明。

如果您正在權衡選項,圖片網格切割替代方案:本機、無損切割對此有詳細說明。