不靠 Photoshop 的逐格時間軸,也能為 GIF 加上文字,只要用一個專注於此的瀏覽器工具,以三個簡短、本機完成的步驟,在每個可見畫格上繪製一段外框字幕——長度最多 80 個字元。Photoshop 為加上字幕的 GIF 走的是經典流程:開啟時間軸面板、展開每個畫格、輸入或貼上字幕、眼睜睜看著處置方式把動畫的一部分搞得亂七八糟,再透過「儲存為網頁用格式」重新匯出。最終目標與瀏覽器流程相同:在每個畫格上繪製同一段簡短字幕,讓文字在整個循環播放期間都保持可見。瀏覽器流程把時間軸的繁瑣工作換成單一表單,你可以挑選一個本機 GIF(最大 20 MB)、輸入字幕、選擇頂端、中央或底端位置,然後下載加上字幕的動畫。由於 GIF 解碼器、全畫格合成器、canvas 文字繪製器以及最終編碼器都在目前這個分頁中執行,因此除非你主動選擇儲存,否則來源檔、解碼後的每個畫格,以及輸出的 Blob 都會留在你的裝置上。

為什麼 Photoshop 的 GIF 工作流程對一段字幕來說太沉重
Photoshop 是為分層的靜態影像設計的,所以動畫 GIF 最終會以堆疊在時間軸上的逐格圖層呈現。若要為整段循環加上字幕,意味著要逐一開啟每個圖層,輸入或貼上訊息,還得祈禱周圍的圖層仍然對齊正確。對於一段較長的動畫來說,這會變成數十甚至數百次的小幅編輯,而任何一個被你略過的圖層,都會讓字幕看起來在畫面上閃爍不定。
每次圖層編輯也必須重新設定時間,因為動畫 GIF 帶有逐格的延遲指令,控制每個畫格在螢幕上停留的時間。在第 12 格加上的字幕並不會自動在整個循環中保持可見,除非周圍的畫格繼承了相同繪製像素,或接受相同的文字編輯。除了時間之外,每個 GIF 檔案還帶有一個調色盤表——一份檔案可以使用、最多 256 種顏色的清單——以及一組處置方式指令,告訴解碼器要保留前一個 canvas、清除一個矩形區域,或還原到較舊的影像。手工在這些特殊規格之間編輯字幕既緩慢,而處置方式只要出一次錯,就可能留下永久的殘影,讓前一格像素洩漏到下一格。
全畫格字幕需要 GIF 讀取器提供什麼
若要繪製一段乾淨、能在整段動畫中保持在原位的字幕,加字幕這個步驟必須知道每個檢視者實際看到的畫面,而不是檔案中每個影像區塊剛好裝了什麼。動畫 GIF 檔案比一組各自獨立的圖片來得複雜。它可能包含一張完整影像,後面接著一些小型變動矩形,解碼器依據處置規則把它們組合成一個共享 canvas。直接把文字畫在這些原始矩形上可能會抹掉背景或留下殘影,因為下一格預期前一個 canvas 會被保留、清除或還原。
理論上的修正是直接了當的:重建每個可見畫格應該顯示的完整邏輯 canvas、在那個合成後的 canvas 上繪製字幕、然後再把結果交給新的 GIF 編碼器。接著編碼器把每個可見畫格量化到一個全新的調色盤,並寫出從頭到尾都能連續循環播放的動畫,任何現代的 標籤或即時通訊應用程式都能順暢播放。那個基於處置方式的合成步驟,正是 canvas 渲染內容(MDN 的 fillText 與 strokeText 參考頁面所描述、在瀏覽器內部用來繪製外框文字的那個合成步驟)所仰賴的同一套標準。
如何不開 Photoshop 就做到 Photoshop 風格的 GIF 文字
以下是不開 Photoshop、用一個本機執行的瀏覽器工具達成 Photoshop 風格結果的配方。每個步驟都在目前這個分頁中完成,最後輸出的動畫就是一個可下載的 GIF 檔案。
- 在瀏覽器中開啟 為 GIF 加上文字 頁面,使用檔案選擇器從你的裝置挑選一個本機動畫 GIF(最大 20 MB)。
- 在字幕欄位中輸入你的簡短字幕,長度請控制在 80 個字元以內,讓它在經過尺寸計算後仍清楚可讀。
- 選擇位置——頂端、中央或底端——讓字幕擺在不會遮住重要主體(像是臉部、標誌或關鍵動作)的位置。
- 選取「為 GIF 加上文字」動作以啟動本機管線:解碼每個影像區塊、套用前一格的處置行為以合成完整的可見 canvas、在選定位置繪製帶深色外框的白色字幕、再把加上字幕的畫格量化到新的 GIF 調色盤。
- 在頁面中觀看一次完整循環以預覽結果,當字幕的位置、粗細與時間都看起來滿意時,再下載新的 GIF。
如果你在下載前變更了字幕、位置或來源檔,之前的管線執行會被取消,舊的結果也會被移除,這樣就不會把過期的下載檔誤認為新設定的結果。
瀏覽器工具強制執行的硬限制
為了避免本機管線超出瀏覽器的記憶體與時間預算,這個工具對輸入強制實施一組小範圍的硬限制。下表列出這套規則所使用的官方定義界線值。
| 限制 | 數值 |
|---|---|
| 所選 GIF 檔案大小 | 20 MB |
| 邏輯 canvas 寬度 | 4,096 px |
| 邏輯 canvas 高度 | 4,096 px |
| 單一畫格像素數 | 3,000,000 |
| 每個檔案的影像區塊數 | 50 |
| 字幕長度 | 80 個字元 |
| 字幕位置選項 | 頂端、中央、底端 |
| 輸出調色盤顏色數 | 最多 256(GIF 格式上限) |
如果所提供的 GIF 無法通過任何一項檢查——例如簽章無效、畫格無法讀取、canvas 超大,或動畫超出預算——管線會以明確的錯誤訊息停止,並且不會留下任何先前的輸出可供下載。更換檔案或縮短字幕,就能在新的輸入上重新開始一次乾淨的執行。
新 GIF 中保留與捨棄的內容
匯出的檔案是由合成後的可見畫格全新編碼而成的 GIF,而不是對原檔進行位元層級的修補,因此有幾項特性是被刻意保留,也有幾項是被刻意捨棄的。解碼後的可見畫格順序以及每格的延遲時間都會保留,因此動畫的時間節奏會與來源一致。原本的調色盤表、註解區塊、應用程式擴充區塊以及有限循環設定則不會保留,因為這個檔案是由全畫格編碼後的像素重新建立的。
原本以極小的漸進式更新矩形最佳化的 GIF,在經過這種全畫格重新編碼後可能會變大,這正是頁面會回報實際輸出大小,而非承諾產生更小檔案的原因。合併後的修補量與輸出像素預算也會在管線建立大型 canvas 工作之前就先加以限制,因此單一張過大的畫格絕不會在不知不覺中覆蓋掉整個瀏覽器分頁。
分享加上字幕的 GIF 之前的快速檢查清單
在加上字幕的 GIF 被送進聊天頻道或社群動態消息之前,幾個快速檢查能幫你抓出最常見的字幕問題。請在瀏覽器中至少觀看一次完整循環,確認字幕不會閃爍或留下殘影。檢查所選的位置不會壓在重要主體(像是臉部、標誌或關鍵動作)之上。確認字幕文字在預期的顯示大小下仍清楚可讀,因為來源 GIF 太小時,尺寸計算可能不會留給字幕足夠的 canvas 像素,讓訊息在手機螢幕上保持銳利。
如果可能的話,請在目標應用程式中檢視最後的檔案,因為瀏覽器的色彩管理、字型渲染以及 GIF 解碼器在各平台之間可能略有差異。若想更深入了解具備處置感知能力的合成方式——包括為什麼未經處理的 GIF 在字幕直接畫在漸進式區塊上時會出現殘影——為什麼加上字幕的 GIF 會出現殘影以及如何修復 一文會更詳細地說明同一套合成修正。
如果你正在權衡各種選項,文字轉 ASCII 藝術產生器:貼到 Discord 中 有詳細的介紹。