WebP 轉 GIF 是僅在瀏覽器中進行的轉檔作業,會在您自己的裝置上讀取 WebP 檔案,並產生一個可下載的 GIF,整個過程從不將圖片傳送到遠端伺服器。該頁面會讀取您選擇的本機檔案,請瀏覽器的影像解碼器擷取可見的影格,將每個影格的 RGBA 像素對應到最多 256 色的 GIF 調色盤,然後組合成一個 GIF Blob,交給您下載。這個來回過程完全不會在別人的電腦上發生:沒有上傳、沒有處理佇列、工具本身也不會保留任何副本,因此當您只是需要將機器上已有的圖片轉成 GIF 版本時,這是個相當合適的選擇。仍然,靜態 WebP 檔會變成單影格 GIF,而動畫 WebP 檔在支援 ImageDecoder 功能的瀏覽器中會變成連續循環播放的 GIF,且原始的 WebP 本身永遠不會被修改。輸出永遠是一個全新的檔案,至於接下來要怎麼處理,完全由您決定 —— 複製到對話中、放到投影片裡,或是交付給舊有工作流程。

webp to gif
WebP 轉 GIF:限制、調色盤與輸出

「WebP 轉 GIF」實際上在您的瀏覽器中做了什麼

轉檔過程分為三個小階段,全部都在同一個分頁中執行。首先,頁面會驗證您選擇的檔案是否為真正的 RIFF/WebP 容器,且其大小是否在本機輸入預算範圍內。其次,瀏覽器會解碼該影像 —— 靜態圖使用其內建的影像解碼器,動畫則使用 ImageDecoder 功能解碼每個影格。第三,將每個可見影格解碼出的 RGBA 像素量化為 GIF 調色盤,並寫入一個新的 Blob,由瀏覽器提供下載。WebP to GIF 是協調這些階段的工具;GIF 編碼器只有在輸入通過驗證後才會載入,因此格式錯誤或過大的檔案會在開始任何編碼工作之前就先被擋下。

由於每個步驟都留在本機,轉檔會繼承瀏覽器能解碼的內容以及 GIF 格式所能呈現的內容。如果 WebP 使用瀏覽器未支援的編解碼路徑,工具會以清楚的錯誤訊息停止,而不會產生誤導性的檔案。如果 GIF 格式無法呈現 WebP 中原本包含的內容 —— 例如比 1 位元更精細的 Alpha 透明度、ICC 色彩設定檔,或容器中繼資料 —— 這些資訊就不會被帶進輸出中,因為 GIF 本身沒有存放這些資訊的位置。這也是結果會被描述為相容性格式而非升級的原因之一:即使轉檔成功完成,新檔案看起來仍可能有些微差異。

工具在編碼前強制執行的輸入限制

頁面在配置大型畫布之前會設定實用的本機限制,因為一個位元組看起來很小的檔案,解碼起來未必便宜。設定這些限制是為了讓轉檔作業在瀏覽器分頁中仍可用,並避免在大型靜態圖或動畫上耗盡記憶體。下表的數字說明了工具在嘗試渲染像素之前所能接受的範圍。

限制數值存在的原因
輸入檔案大小最多 20 MB避免瀏覽器將過大的檔案讀入記憶體
動畫影格數1 到 50 個影格讓每個影格的解碼工作量維持在一般分頁能處理的範圍內
解碼後的影格邊長單邊不超過 4,096 像素限制每個影格的畫布配置
解碼後的畫布每個影格不超過 3 百萬像素在量化前限制像素預算

這些限制並不保證每個看起來很小的檔案都很便宜;它們是僅在瀏覽器中運作的公用程式的一套明確界線。如果檔案格式錯誤、太大、解碼後太大、含有無法讀取的影格,或使用瀏覽器不支援的編解碼路徑,工具會回報問題,而不會產生一個還需要您再三確認是否正確的可疑下載。即使檔案通過驗證,一旦進入這些範圍的上限,編碼階段仍可能會花費明顯的時間,尤其是當 GIF 調色盤需要在多個影格之間重新建立時。

如何在本機將 WebP 轉成 GIF

  1. 使用頁面上的檔案選擇器,從電腦中選擇一個不超過 20 MB 的本機 WebP 檔。
  2. 選擇Convert to GIF,等待瀏覽器解碼可見的影格並將其編碼為一個新的 GIF Blob。
  3. 下載頁面提供的 GIF,然後在您預計使用它的目的地應用程式或瀏覽器中先開啟一次,再進行分享。

整個流程都在目前這個分頁內執行。如果您不想額外安裝像是 FFmpeg 之類的命令列工具來完成這項工作,在這份關於如何在不透過 FFmpeg 的情況下將 WebP 轉成 GIF 的瀏覽器逐步說明中描述的瀏覽器方法,遵循相同的三階段模式,而且完全不需要上傳或額外軟體。上述三個步驟就是整個工作流程:選擇檔案、點擊一次、儲存結果。頁面本身沒有裁切、沒有調整大小的滑桿、沒有品質控制,也沒有轉檔後的編輯功能。

當像素變成 GIF 時,會發生什麼變化

GIF 是一種相容性格式,而非品質升級。相較於 WebP,GIF 的色彩模型小得多,在轉檔過程中,每個可見的影格都會被量化到最多 256 色的 GIF 調色盤,而透明像素則以 1 位元的透明度來表示。因此,相片、漸層,以及半透明的藝術作品在轉檔後往往會出現色階化、邊緣改變,或檔案變大的情況。原本已經有效壓縮的 WebP,轉出來的 GIF 反而可能更大,這是完全可能發生的。

屬性是否保留到 GIF 中實際發生情況
每個影格的可見像素是解碼後的 RGBA 會對應到 GIF 調色盤中
動畫時間在支援的瀏覽器中是影格延遲會被保留到循環播放的 GIF 中
容器中繼資料否GIF 沒有存放的位置;會直接被捨棄
ICC 色彩設定檔否GIF 無法嵌入;設定檔不會被保留
Alpha 透明度精細度降為 1 位元透明度半透明像素會直接變為完全透明或完全不透明
原始壓縮方式否GIF 使用 LZW,而非 WebP 的預測式編碼

如果您的影像包含文字、漸層、品牌色或細節,請在發布該下載檔案前先權衡本節的最後一個表格。原本在 WebP 中看起來平順的相片,量化為 256 色後往往會出現可見的色階。使用精確品牌色調的標誌,可能會偏移到調色盤中最接近的顏色。反鋸齒邊緣可能會變得更銳利,或產生光暈;任何半透明的陰影都會因為 GIF 的透明是全有或全無而非漸層,而塌縮成硬邊輪廓。為了獲得可靠的結果,請從符合您需求的最小 WebP 開始,將原始的 WebP 作為品質來源,並避免僅為了當作大頭貼或表情符號使用,就把大型動畫轉成 GIF,迫使其檔案大小必須維持很小。

何時動畫 WebP 可成功轉檔、何時會停止

靜態 WebP 很單純:瀏覽器的影像解碼器就能處理,輸出會是單影格的 GIF。動畫 WebP 就是另一回事了。該頁面會使用瀏覽器的 ImageDecoder 功能讀取每個動畫影格,將解碼後的時間資訊保留到 GIF 中,並輸出一個連續循環播放的檔案。並非所有瀏覽器都支援此功能。在目前的 Chrome 瀏覽器中,動畫路徑運作如預期,多影格的 WebP 會產生保留原始延遲的多影格 GIF。在不支援 ImageDecoder 的瀏覽器中,頁面會以清楚的訊息停止,而不會悄悄只匯出第一個影格,卻假裝它代表了整個動畫。這使輸出的範圍保持誠實:靜態圖輸出單影格 GIF、支援瀏覽器中的動畫輸出完整循環 GIF、在瀏覽器無法讀取動畫時明確拒絕。相同的界線也涵蓋超過 50 影格上限的動畫,或解碼後任何單一影格邊長超過 4,096 像素的情況。

在分享下載的 GIF 之前先檢查它

由於轉檔會產生新檔案,頁面永遠不會覆寫您電腦上的檔案或資料夾。這給您一個乾淨的時機,讓您能在 GIF 實際被觀看的尺寸與位置檢視它。請在目的地應用程式或瀏覽器中先開啟一次。如果檔案比預期大、邊緣有所改變,或某些品牌色因為調色盤量化而發生偏移,您可以選擇不同的來源 WebP 再試一次,而完全不需更動原始檔案。此工具不會編輯個別影格、不會裁切或調整影像大小、不會加上標題、不會在轉檔後最佳化 GIF、不會擷取遠端 URL、不會轉檔影片、不會建立受密碼保護的封存檔,也無法保證與所有舊版 GIF 讀取程式相容。當您需要上述任何一項 —— 調整大小、不同的調色盤取捨、拆成靜態圖,或在轉檔後加上文字 —— 正確的做法是在轉檔之後搭配一個專門的 GIF 工具,而非期待單一瀏覽器分頁能提供更多功能。

若想更深入了解,請參閱在 Photoshop 中為 GIF 加上文字:瀏覽器的替代方案。