動畫 GIF 本身沒有原生的字幕時間軸,所以在 GIF 上的某個時間點加入文字,實務上是把同一段字幕畫在每一個可見的影格上,再由每個影格固定的延遲時間來控制文字何時出現。為 GIF 加文字工具採用的正是這個做法:它會在目前瀏覽器分頁中,把一段簡短的白色字幕加上深色外框,放在本機動畫 GIF 的每一個完整可見影格上,然後輸出一個可以下載、會自動循環播放的新 GIF。由於每個影格都帶有字幕,文字會在整個循環中持續顯示,而不是只出現於某一刻,這是基於色板的 GIF 在不借助 MP4 或 WebP 影片等獨立容器的情況下,所能做到最接近「依時間顯示文字」的效果。字幕會被限制在邏輯畫布範圍內,而不會額外延伸出新的邊框;字級大小會依畫布尺寸與字幕長度計算;從解碼到最後下載的每一個位元組的處理,都在本機端完成。

GIF 的時間機制與「在特定時間加入文字」實際上如何運作
GIF 動畫是一連串的影像區塊,每個區塊都有以百分之一秒為單位的延遲時間,並附上控制位元組,用來說明下一格在處理繼承而來的像素時應該怎麼做。播放器會播放第 1 格 delay1 的時間,再播第 2 格 delay2 的時間,依此類推,播完後再從頭循環。它沒有獨立的字幕軌、沒有關鍵影格的時間戳記,也沒有可以從第 3.4 秒打開、第 5.1 秒關閉的逐格文字圖層。當觀看者希望在某一刻顯示文字時,在 GIF 容器中唯一可靠的做法,就是把文字放到涵蓋該時刻的那些影格上。在一個 30 格的動畫中,把字幕畫在第 1 格到第 30 格上,就會在整個循環期間都看見;如果只畫在第 10 格到第 15 格,字幕只會短暫閃過又消失,而這通常不是讀者真正想要的結果。
因此,一個專注的字幕工具會把每一個可見的影格都納入處理。在 GIF 中,讀者「在特定時間加入文字」的想法,會變成「在我關心的那些影格上加入文字」。對反應短片、標題卡或教學註解而言,這幾乎都代表動畫的每一個可見影格。若需要更複雜的時間控制,GIF 格式本質上就是錯誤的容器,改用具備真實文字軌的影片格式會更合適。
為 GIF 加文字工具能做與不能做的事
這個工具的功能刻意保持精簡。在投入時間製作字幕之前,先清楚知道它做了什麼、沒做什麼,會更容易判斷結果是否符合你的需求。
| 功能 | 行為 |
|---|---|
| 檔案來源 | 從你的裝置中選擇一個動畫 GIF,檔案大小上限為 20 MB |
| 字幕長度 | 最多 80 個字元 |
| 字幕位置 | 邏輯畫布的頂端、中央或底部 |
| 樣式 | 白色填色加上深色外框;字級依畫布與字幕長度計算 |
| 涵蓋的影格 | 動畫的每一個可見影格 |
| 逐格延遲 | 保留自解碼後的輸入檔 |
| 循環行為 | 輸出會持續循環播放 |
| 處理位置 | 目前的瀏覽器分頁;不上傳、不需帳號、不排隊、無浮水印 |
| 原始中繼資料 | 不予保留(調色盤、註解、應用程式擴充區塊、有限循環次數設定都會被捨棄) |
| 逐格字幕、多層文字、字型挑選器、文字動畫時間控制、貼紙、背景框、影片字幕軌、MP4 或 WebP 匯出 | 未提供 |
三步驟為本機 GIF 加上字幕
- 從你的裝置中選擇一個不超過 20 MB 的動畫 GIF。挑選你想加上字幕的檔案;它絕不會離開你的瀏覽器分頁,所以不必擔心伺服器會保存一份副本。工具會拒絕超過 20 MB 的檔案、邏輯畫布任一邊超過 4,096 像素或單格超過三百萬像素的檔案,以及超過 50 個影像影格的檔案。
- 輸入一段簡短字幕,然後選擇字幕位置為頂端、中央或底部。字幕長度請控制在 80 個字元以內,讓字級大小的計算公式有空間維持文字可讀性。簡短的片語、標題、反應字或註解效果最佳。字級大小是依畫布尺寸與字幕長度計算的,所以非常長的字串會被縮小,而不會超出範圍。
- 點選「為 GIF 加文字」,檢視完整循環播放效果,然後下載加上字幕的新動畫。在分享檔案之前,請在瀏覽器或你打算使用的應用程式中至少看過一次完整播放。確認小字仍然清晰、所選位置不會遮住主體,以及影格之間的轉換仍然自然。如果有任何問題,更換檔案或修改字幕後,先前的結果會被移除,舊的設定不會被誤認為新的結果。
為何字幕是畫在完整的邏輯畫布上,而不是原始的更新區塊上
GIF 的影格並非各自獨立的圖片。一個檔案可能儲存一張完整影像,後面接著一長串只更新一條像素區域的小矩形。影格也帶有釋放指令,告訴下一格要保留像素、清除某個矩形,或還原到先前的畫布狀態。如果字幕直接畫在這些原始矩形上,應該顯示完整背景的那一格,就只會出現那一小條區域,留下殘影、缺漏的背景,或前一個影格釋放後留下的可見邊界。
為了避免這種情況,工具會解碼每個影像區塊,先套用前一個影格的釋放行為來組成每一格的完整邏輯畫布,然後才在這完整的影格上繪製帶外框的字幕,再交給新的 GIF 編碼器輸出。因此匯出的是刻意重新編碼的 GIF,而不是就地修改位元組的結果。因為加入文字會改動每個影格的像素,每個加上字幕的完整影格都會被量化成最多 256 色的 GIF 調色盤,再以連續循環的動畫形式寫回,並保留原本解碼後的影格順序與逐格延遲。實際在底層,文字是透過標準的瀏覽器 canvas 繪圖指令繪製的,MDN 的 fillText 負責白色填色,MDN 的 strokeText 負責深色外框,這就是字幕在一般背景上能保持清晰可讀的原因。
這個重新編碼完整影格的做法,也說明了為何輸出檔案並不一定會比來源檔小。原本透過極小更新矩形最佳化的 GIF,一旦每個影格都被改寫成完整影像,體積可能反而會增加。頁面會顯示實際的輸出大小,而不是承諾檔案一定會變小,讓你在下載前就能看到結果。
加上字幕的 GIF 何時會看起來好看,何時不會
這個工具在短小、高對比的片段上能產生最乾淨的成果,而且所選的位置不會與主體重疊。反應鏡頭或教學註解搭配置中的字幕,通常第一次嘗試就能有不錯的閱讀效果。帶有平滑漸層的照片,在調色盤轉換後可能會出現輕微色差,因為每個影格都會被量化為最多 256 色;非常小的 GIF 可能也沒有足夠的像素讓字級公式保持文字清晰。
如果目前的瀏覽器無法解碼你提供的 GIF,或無法配置所需的畫布,工具會以明確的錯誤訊息停止運作,且不會保留任何先前的輸出,因此失敗的執行作業絕不會覆寫掉好的結果。為了讓工作流程穩定可靠,請保留原始 GIF、以選定的字幕與位置重新選擇它,並在要發布的應用程式中至少看過一次完整循環,再行發佈。瀏覽器的色彩管理、字型渲染與 GIF 解碼會依平台而略有不同,所以在螢幕上實際檢查是流程的一部分,而不是可有可無的額外步驟。這個工具不會修復損壞的 GIF、不保留音訊、不產生 MP4 或 WebP、不會推測理想訊息,也不保證與社群網路的相容性;但若任務明確,就是為本機動畫 GIF 的每一個可見影格加上一段簡短、帶外框的字幕,它能從頭到尾完整覆蓋這個工作流程,而且檔案完全不需要離開你的裝置。
延伸閱讀:如何從照片製作 GIF 貼圖。
延伸閱讀:如何使用更小的調色盤來最佳化 GIF 檔案。