GIF 轉 Base64 工具

將靜態或動態 GIF 編碼為 Base64。原檔案逐位元組編碼,所有幀、幀間隔和迴圈設定都會原樣保留。

完全在瀏覽器中執行,不會上傳任何資料。

使用方法

  1. 將 GIF 拖到上傳區域,點選選擇檔案,或貼上圖片。
  2. 保持原格式,並且不要設定最大寬度,這樣動畫才會保留。
  3. 檢視原始大小和編碼後大小,GIF 動圖的體積增長很快。
  4. 複製 img 標籤或 CSS background-image 輸出,也可以使用 Data URI、純 Base64 或 Markdown 版本。

關於 GIF 格式

GIF(圖形交換格式,MIME 型別為 image/gif)誕生於 1987 年。每一幀最多使用 256 色的調色盤,並以 LZW 演算法無失真壓縮。它的透明只有「有」和「無」兩種:可以把調色盤中的一種顏色設為透明,但不支援半透明。一個檔案可以包含多幀,每幀有各自的停留時間,還能設定迴圈次數,因此 GIF 成了短動畫的代名詞。

GIF 的 Base64 以 R0lGODlh 開頭(常見的 GIF89a 版本),較老的 GIF87a 則以 R0lGODdh 開頭。

如何保留動畫

保持原格式時,工具會原樣編碼檔案位元組,因此生成的 Data URI 無論放在 <img> 標籤裡還是作為 CSS 背景,都會和原檔案一樣播放動畫。

轉換為 PNG、JPEG 或 WebP,或者設定最大寬度,都會讓瀏覽器重新繪製圖片,最終只剩第一幀。想得到動圖的靜態預覽時這很方便,但如果要保留動畫,請不要開啟這兩個選項。

GIF Data URI 仍然適用的場景

  • CSS 中的小型載入動畫和動態狀態圖示。
  • 經典的 1x1 透明像素,用作佔位的 src。它只有幾十個位元組,Base64 後遠不到 100 個字元。
  • 顏色很少的簡單線條圖,GIF 在這類圖片上相當緊湊。

大尺寸動畫則不合適。一個 2 MB 的表情包動圖會變成約 2.7 MB 的文字,而且無法單獨快取;改用外鏈的影片檔案或動態 WebP 要輕得多。

.loading {
  background: url("data:image/gif;base64,R0lGODlh...") no-repeat center;
}

<img src="data:image/gif;base64,R0lGODlh..." width="32" height="32" alt="載入中">

常見問題

Base64 編碼後 GIF 還會動嗎?

會,只要保持原格式且不縮放尺寸。Base64 儲存的是完整檔案,包括所有幀和迴圈設定。

為什麼轉換後 GIF 不動了?

轉換為 PNG、JPEG、WebP 或縮放尺寸時,圖片會從第一幀重新渲染。本工具無法生成動態 PNG 或動態 WebP,想保留動畫就請使用原始 GIF。

GIF 的 Data URI 會保留透明背景嗎?
會。Base64 會保留調色盤中的透明色。不過 GIF 不支援半透明,柔和的邊緣放在其他背景上可能出現鋸齒,PNG 或 WebP 處理平滑邊緣效果更好。
如何把 Base64 字串還原成 GIF?
把字串貼上到 Base64 轉 GIF 中,即可預覽並下載為 .gif 檔案。