反轉影像顏色是在位元層級將每個紅色、綠色和藍色通道替換為其互補值,對每個通道套用公式 output = 255 減去 input,同時保持 alpha 通道不變。當套用於完全不透明的來源時,此規則會把黑色變成白色、白色變成黑色、紅色變成青色、綠色變成洋紅色,而藍色變成黃色,整個過程不涉及任何感知校正、gamma 調整或底片遮色去除。想要在 JPG、PNG、GIF 或 WebP 等點陣圖上產生此效果的 Figma 使用者,無法直接在 Figma 內套用,因為 Figma 的原生色彩控制項作用於填色、描邊和圖層效果,而非匯入點陣圖內部的像素資料。可靠的做法是將影像從 Figma 匯出,執行一次本機瀏覽器式的 RGB 反轉,然後把新產生的靜態 PNG 以替換圖層的方式放回同一個 Figma 檔案中。

how to invert image colors in figma
在 Figma 中反轉影像顏色:本機瀏覽器做法

為何 Figma 無法自行反轉點陣圖

Figma 將匯入的點陣圖視為不透明的像素容器。你可以移動、縮放、遮罩它們,使用圖層不透明度進行混合,並對整個圖層套用 Difference 或 Invert 等混合模式,但 PNG、JPEG、GIF 或 WebP 內部的底層位元值仍維持你匯入時的原始內容。原生的圖層混合模式只是把像素與圖框中位於下方的內容重新組合,並不會改寫儲存的位元。

真正的位元層級反轉只會作用於向量填色、描邊、文字,以及 Figma 自有圖層上一小部分效果。一旦你把手機拍來的 JPG、PNG 螢幕擷圖,或行銷匯出的 WebP 放到 Figma 畫布上,色彩就已被固定為點陣位元。設計師通常會求助於外掛,或者更常見的做法是先在 Figma 之外編輯檔案,再換回來。

Invert Image Colors 工具正是用於這個外部編輯步驟。它會讀取實際的位元容器,透過瀏覽器解碼第一幀,對 Canvas 暴露出的每個 RGBA 位置套用該公式,並以原始尺寸匯出靜態 PNG。沒有任何內容會被上傳、不會被伺服器重新壓縮,也不會在未經你同意的情況下被重新取樣或縮放。

先把影像從 Figma 匯出

在 Figma 內開始,匯出你想要反轉的影像。在圖層清單中選取該圖層,然後在右側面板中選擇 Export。為了讓工具的容器檢查通過,請挑選最接近你來源的格式:

  • 如果你的來源具有透明度或銳利邊緣(例如 UI 螢幕擷圖、圖示或貼紙),選擇 PNG。
  • 針對照片和帶有雜訊的產品照片,選擇 JPEG,並接受其有損壓縮的權衡。
  • 當來源是動畫 GIF,而你想要反轉後的第一幀靜態預覽時,選擇 GIF。
  • 當來源是具有透明度的現代網頁匯出格式時,選擇 WebP。

請以原始解析度進行匯出。反轉工具會拒絕任一解碼後邊緣超過 8,192 像素,或總像素面積超過 24,000,000 的檔案,因此一張 4K 或 8K 的照片可能會在進行任何反轉之前就被合理地拒絕。如果你的匯出檔案太大,請先用 Image Resizer 工作流程把圖層縮小,或裁切掉多餘的邊緣,再進行匯出。

使用瀏覽器工具在本機反轉你的影像

一旦檔案存到磁碟後,反轉本身只需要三個操作步驟,並且全程停留在你目前的瀏覽器分頁中。

  1. 開啟 Invert Image Colors 頁面,選擇 PNG、JPEG、GIF 或 WebP 檔案。等待位元容器偵測、瀏覽器解碼與尺寸驗證完成且不出錯。
  2. 工具會反轉解碼後的第一幀,並並排顯示兩個原始尺寸的 PNG 預覽:一邊是來源,另一邊是反轉後的結果。請加以比對,確認效果符合你想要的視覺。
  3. 確認尺寸與所回報的輸出位元大小,然後下載靜態 PNG。檔案會以真正的 PNG 容器與原始像素尺寸存到你的下載資料夾。

下載會透過 Canvas 的 toBlob 流程進行,因此輸出會是完整的 PNG,絕不會是截斷的檔案或被悄悄降級成 JPEG。若反轉因為防護機制(例如 null Blob、輸出超過 32 MiB、或同步例外)而失敗,忙碌狀態會清除,且不會留下任何陳舊的下載,因此你可以放心地重新執行該步驟。

把反轉後的 PNG 用回 Figma 中

把下載的 PNG 直接拖曳到開啟中的 Figma 檔案。Figma 會將其視為全新的點陣圖圖層,反轉後的色彩已烘焙於像素之中。將新圖層置於原始圖層之上,為其重新命名以便辨識,並在確認替換結果符合你的圖框配置後,隱藏或刪除來源圖層。

如果原始影像位於元件或鎖定的圖框中,請將新圖層放在同一個圖框上,然後在來源圖層上按右鍵並將其移到最下層,或是在用移動工具複製其變形屬性後將其刪除。偏好非破壞性往返流程的設計師,通常會保留一個靜音的來源圖層,並在其上方使用反轉後的圖層,這樣就能切換而不必重新執行匯出。

對於已使用共用元件的大型畫板或設計系統,整潔的做法是把反轉後的 PNG 存放在 Figma 素材庫或已連線的團隊素材庫中,讓每個取用的圖框都能拉到同一個反轉版本。

色彩對應規則,以表格表示

反轉規則與 Figma 用於向量填色與描邊的位元層級運算相同。由於這是位元運算而非感知運算,下表的對應是精確的:

來源色彩RGB 輸入反轉後 RGB 輸出可見結果
純黑(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)黃色
中間灰(128, 128, 128)(127, 127, 127)接近中間灰,差一個位元

最後一列是有意為之:真正的中間灰位元是 128,而 255 減 128 得到的是 127,而非 128。位元規則並不會對齊到完美的鏡像,而是產生字面上的互補位元。因此,對同一組解碼後的位元執行兩次反轉,會得到相同的原始值,這也是確認該演算法屬於位元精確而非近似值的最簡單方式。

開始前必須知道的檔案、邊緣與像素限制

有四個獨立限制決定它會接受你的檔案,或在反轉之前就拒絕。所有限制都在精確的邊界上檢查,只要超出位元或像素一個單位就會被拒絕:

限制數值檢查位置
輸入檔案大小上限 15 MiB回報的檔案大小與實際的 ArrayBuffer 長度
解碼後邊緣長度每邊上限 8,192 像素在 createImageBitmap 回報尺寸之後
解碼後總面積上限 24,000,000 像素解碼後點陣圖的寬度乘以高度
輸出 PNG 大小上限 32 MiB在 Canvas 編碼結果之後

15 MiB 的輸入預算與 32 MiB 的輸出預算是刻意分開的,因為解碼後的 PNG 在每個像素都完全不透明時,體積可能會膨脹,尤其是帶有雜訊的照片。如果反轉後的 PNG 會超過 32 MiB,工具會在發佈 URL 之前讓匯出失敗,因此你絕不會看到寫到一半的檔案,或是被悄悄替換成有損 JPG 的 PNG。

容器檢查同樣嚴格到位元層級。工具不會信任檔名、檔案選擇器的篩選條件,或作業系統的 MIME 標籤。它會驗證 PNG 的簽章加上 IHDR 與結尾的 IEND、JPEG 的 SOI、後續標記與結尾的 EOI、GIF87a 或 GIF89a 標頭及其邏輯螢幕結構與結束符,或 WebP 的 RIFF 尺寸加上 WEBP 標記以及一個有界的 VP8、VP8L 或 VP8X 第一個區塊。被截斷的魔術位元、被改名的任意檔案,以及 SVG、AVIF、HEIC、BMP、TIFF 或 PDF 等不支援的格式,在 Canvas 開始工作之前就會失敗。

這個效果是什麼、不是什麼

反轉是一種位元通道的視覺效果,而非色彩管理的轉換,也不是底片負片修復。它不會將 gamma 線性化、不會模擬感知互補色、不會去除掃描中的橙色遮色、不會校正曝光,也不會進行色調分級。EXIF 方向標籤、GPS、ICC 色彩描述檔、註解以及其他來源中繼資料都不會被帶入 PNG 匯出,因為 Canvas 像素匯出不會保留它們。當動畫、嵌入的描述檔或中繼資料很重要時,請保留原始檔案。

動畫 GIF 與動畫 WebP 輸入會使用瀏覽器解碼後的第一幀,並成為單一的靜態 PNG。後續的影格、計時、循環、調色盤與銷毀行為都不會被保留,而當目標只是為 Figma 圖層提供單一的反轉圖片時,這正是正確的行為。如果你需要在動畫流程中使用反轉後的結果,請先用 GIF Splitter 把來源拆成影格,逐張反轉,再用 GIF 製作工具把它們重新組合。

本機瀏覽器處理有助於隱私,但成功解碼並不等同於惡意程式分析、內容審核、作者驗證,或是影像使用安全的證明。請將輸出視為你所產生的位元,而非關於來源的證據。

延伸閱讀:如何在 Canva 中從影像挑選顏色:4 個快速步驟。

延伸閱讀:如何在 Photoshop 或瀏覽器中製作純色。