看懂 GIF 合成
GIF 透明度與完整影格的還原方式
GIF 的透明色、局部更新和 disposal 指令共同決定每個瞬間的畫面。理解這些資訊,可以分清楚輸出問題、預覽背景與原檔已存在的內容。
1. GIF 透明度代表什麼
GIF 的圖片資料使用調色盤索引,透明標記可指定其中一個顏色索引不繪製。這種透明度通常是透明或不透明的選擇,與 PNG 可以使用的多級 alpha 不同。轉成 PNG 不會自動創造原本不存在的半透明邊緣。
透明像素常表示這次局部更新不覆蓋該位置,所以較早的畫布內容可能仍保留。不要把它理解成每格都把背景清空。若透明物件周圍出現實色邊框,先檢查 GIF 是否早已把邊緣混合在特定背景上。
2. 為何 GIF 會儲存局部區塊
當只有小部分畫面改變,編码器可以儲存一個較小矩形來節省檔案空間。它包含區塊尺寸與位置,未涵蓋的地方依靠畫布既有內容。這種最佳化讓下載檔更小,但每個區塊並不一定是可以獨立使用的完整圖片。
例如固定背景上有一個移動圖形,後一格可能只更新圖形附近的區域。若直接儲存更新矩形,圖片尺寸、背景或座標就會與播放畫面不同。GIF Splitter 的目標是還原完整可見影格,讓每張 PNG 可單獨檢視。
3. 先看邏輯畫布
GIF 的邏輯畫布定義動畫整體寬高;每個圖像區塊可能小於畫布,並帶有左上位置。完整輸出應遵守畫布尺寸而不是區塊尺寸。工具的結果尺寸與 PNG 尺寸可用來核對這項差別,縮圖顯示尺寸則只是介面縮放。
合成時要把區塊放到正確位置,使用該圖像適用的全域或局部調色盤,再處理透明索引。忽略座標容易造成圖形移位;忽略局部調色盤可能產生錯色。這些問題不是靠把 PNG 放大或重新壓縮能修復的。
4. Disposal 2 清除區域
disposal 2 指示目前影格顯示結束後,為下一格清除這一格所佔的矩形。它作用於該區域而非必然整張畫布,也不是在目前 PNG 儲存前提前清除。背景處理需依 GIF 的相關資料判定,不能概括為所有來源都填白色。
受控範例可以把小圖形放在不同位置,逐格觀察清除後是否留有舊圖形。先看當前合成畫面,再看下一格承接的狀態,才能分清顯示與清除的時機。若移動物件有拖影,值得檢查這個指令是否被正確應用。
5. Disposal 3 還原先前狀態
disposal 3 要求顯示目前影格之後,還原繪製這格前的畫布狀態。它不是複製前一張已輸出的 PNG,也不是簡單清空。實作需要在繪製前保留相關狀態,才能在後續影格開始前回復。
例如在已有背景上短暫加上一個覆蓋物,使用 disposal 3 可以在下一步回到覆蓋前的畫面。比較受控例子的前後影格時,應觀察舊背景是否回復、覆蓋物是否消失。單看一張 PNG,無法推斷整段動畫的還原流程。
6. 對照原始區塊與完整影格
原始區塊適合研究編碼最佳化,完整影格則適合截圖、參考圖和素材匯出。兩者可以在尺寸和內容上不同,而都正確反映各自的資料層次。下載 PNG 時,GIF Splitter 會先完成合成,保留前面仍應存在的畫素。
比較輸出時,請使用原動畫同一位置的可見畫面,不要拿區塊解碼結果當成唯一正確答案。不同播放器可能對特殊或不完整資料採不同處理。若需要排查,記錄影格編號、透明索引、區塊位置和 disposal,而不是只描述「看起來不一樣」。
7. 在不同背景檢查 PNG
預覽中的棋盤格幫助辨識透明區域,不屬於 PNG 像素。下載後把圖片置於淺色、深色和較鮮明的背景,便能看出哪些區域透明、哪些其實是白色或黑色。只在白色圖片檢視器中看,容易把白底誤認為透明。
若棋盤格本身出現在下載圖片中,可能來源 GIF 已經把它畫進去。另需留意邊緣的背景混色:GIF 只有有限色彩和透明方式,PNG 不會還原作者製作時已合成掉的資訊。需要平滑透明邊緣時,最好取得原始素材或重新輸出。
8. 選擇適合的修正方式
如果來源透明資料與合成結果一致,應在下一個編輯工具選擇合適背景,無須反覆轉檔。若來源本來含實色背景、錯色或鋸齒,需要回到製作素材修正。裁切局部區塊或把所有相同色一律刪除,可能同時破壞物件內部的顏色。
若同一檔案在合成時出現明顯位置錯誤或殘影,先用問題排解指南核對來源完整性和處理限制,再回報可重現的影格位置。不要把瀏覽器差異當成已確認的缺陷,也不要為求一致擅自改變原始畫素。
GIF 實用指南
從選取一張圖片,到理解透明度、播放時間及瀏覽器限制,這些指南幫你判斷輸出結果。
- 如何把 GIF 拆成 PNG 影格
了解如何從 GIF 擷取靜態圖片、將動圖逐格轉成 PNG,並下載有編號的 ZIP。附透明背景、影格時間與大型檔案的處理說明。
- GIF 影格延遲與預覽播放時間
區分 GIF 記錄的延遲和預覽播放時間,使用 0、10、20、80 毫秒範例理解 PNG 序列的時間資訊。
- GIF 拆圖與下載問題排解
按讀取、解碼及下載階段排查 GIF 問題,了解 30 MiB、1,000 影格、畫素與記憶體限制。