使用方法
- 貼上 Base64 字串或 data:image/webp;base64 URI,其他圖片格式同樣可以。
- 檢視預覽、識別出的格式和解碼後的大小。
- 下載格式保持為 WebP 即可轉換;如果要按解碼結果原樣儲存,請選擇「原始檔案」。
- 下載 .webp 檔案,並與原圖比較大小。
如何識別 WebP 資料
WebP 存放在 RIFF 容器中,WAV 音訊用的也是這種封裝。檔案以 ASCII 文字 RIFF 開頭,所以 Base64 以 UklGR 起始;幾個位元組之後的 WEBP 標記表明容器裡裝的是圖片而不是聲音。圖片資料有三種形式:有損(VP8)、無損(VP8L),以及支援透明、動畫或後設資料的擴充套件格式(VP8X)。MIME 型別為 image/webp。
為什麼要轉換為 WebP
根據 Google 的測試,在畫質相當的情況下,有損 WebP 比 JPEG 小約 25% 到 34%,無損 WebP 比 PNG 小約 26%。與 JPEG 不同,WebP 支援 Alpha 通道,帶透明背景的 Logo 和貼紙也能順利轉換。目前所有主流瀏覽器都能顯示 WebP。
當圖片以內嵌方式使用時,體積變小會帶來雙重好處:圖片更輕,HTML、CSS 或 JSON 中的 Base64 字串也更短。轉換完成後,可以用 WebP 轉 Base64 重新編碼新檔案。
結果並不總是更小。很小的圖示、已經充分壓縮的照片以及顏色很少的扁平圖形,有時反而會變大,這時 PNG 或 JPG 更合適。在修改構建流程之前,也可以先用本工具快速測試某張圖片能節省多少:貼上 Base64 格式的 PNG 或 JPEG,下載 WebP,再比較兩者的大小。
用 Pillow 批次轉換
如果要在伺服器上批次處理,用 Python 的 Pillow 庫幾行程式碼就能完成同樣的轉換:
import base64, io
from PIL import Image
img = Image.open(io.BytesIO(base64.b64decode(b64_string)))
img.save('output.webp', 'WEBP', quality=80)
常見問題
WebP 能保留透明背景嗎?
能。WebP 在有損和無損模式下都支援完整的 Alpha 通道,轉換後透明區域依然透明。
動態 WebP 能保留動畫嗎?
以「原始檔案」格式下載即可保留所有幀。轉換需要經過畫布,只能得到一幀靜態畫面。
轉換後的 WebP 一定比原圖小嗎?
不一定。大尺寸照片和截圖通常會變小,但很小或已經高度最佳化的圖片可能反而變大。可以把工具顯示的解碼大小與下載檔案的大小進行對比。
有些軟體打不開 WebP 檔案怎麼辦?
較舊的看圖軟體和辦公軟體可能不支援 WebP。貼上同一段 Base64,改為下載 PNG 或 JPG 即可。