部落格 上傳媒體 短網址 工具 圖庫 常見問題 聯絡我們 登入
📢 永久無廣告,自動清除EXIF,保護隱私內容
Tools

🔗 圖片轉 Base64

產生 Data URI、CSS、HTML

Base64 會讓資料變大約 33%,所以先壓過再轉幾乎一定划算。關掉的話會用原檔直接編碼。

⚠️ Data URI 適合很小的圖示。超過 5–10KB 的圖片內嵌進 HTML 或 CSS 通常是反效果 —— 它無法被瀏覽器快取,每次載入頁面都要重新傳一次。

🔒 所有處理都在你的瀏覽器裡完成 — 檔案不會上傳到我們的伺服器,我們也看不到你的圖片。關掉分頁後就什麼都不留。

圖片轉 Base64:處理前後對照範例
左邊是原圖,右邊是這個工具實際跑出來的結果,不是示意圖。圖上若有標檔案大小或尺寸,都是實際量到的數字。

使用步驟

  1. 選一張圖 小圖示最適合 — logo、icon、簡單的背景圖案。照片轉出來的字串會長到幾乎無法使用。
  2. 保持「先重新編碼縮小」開啟 Base64 會讓資料膨脹大約 33%(每 3 個位元組變成 4 個字元)。所以先縮到你實際會用到的尺寸、壓一下再編碼,幾乎一定划算。預設寬度 256px、WebP 格式對圖示來說很夠。
  3. 選輸出形式 Data URI 是純字串,你自己決定怎麼用。HTML img 直接給你一個含寬高的標籤。CSS background 給你一段可以貼進樣式表的規則。
  4. 按開始處理 下面會顯示完整的字串與它的長度。長度是重點 — 那個數字直接代表它會讓你的 HTML 或 CSS 檔案增加多少。
  5. 複製,或下載成 .txt 按「複製」就進剪貼簿。字串很長的時候,下載的 .txt 檔比在瀏覽器裡全選好用得多。

什麼時候用得到

把小圖示內嵌進 CSS,少一次請求

幾百位元組的圖示如果單獨放一個檔案,光是 HTTP 請求的成本可能就比圖片本身還大。內嵌成 Data URI 可以省下那次往返。不過在 HTTP/2 之後這個好處已經小很多了,別過度使用。

寫 email HTML

很多信箱會擋掉外部圖片,收件人要點「顯示圖片」才看得到。內嵌的圖不會被擋(但要注意 Gmail 對 Data URI 的支援有限,寄之前務必實測)。

單一檔案的網頁或報告

要交出一個「打開就能看、不依賴任何其他檔案」的 HTML 時,所有圖片都得內嵌。離線文件、自動產生的報表、要用附件寄出的頁面都是這種情況。

快速測試、寫 demo

在 CodePen、JSFiddle 或一個暫時的測試頁面裡要用一張圖,但懶得處理檔案託管 — 貼一段 Data URI 最快。

Base64 是什麼

圖片是二進位資料,而 HTML、CSS、JSON 這些地方只能放文字。Base64 是一種把任意二進位資料轉成純文字的編碼方式 — 它用 64 個安全的可列印字元(A–Z、a–z、0–9、+、/)來表示原始的位元組。

代價是體積會膨脹約 33%:每 3 個位元組必須用 4 個字元表示。這不是實作上的浪費,是這種編碼的數學下限。

什麼時候值得內嵌

簡單的判斷標準:圖片小到 HTTP 請求的成本比圖片本身還大時,才值得。實務上大概是 5KB 以下的小圖示。

超過這個範圍,內嵌的壞處就開始超過好處,主要是快取的問題。獨立的圖片檔只會被下載一次,之後每一頁都直接從快取拿;內嵌的圖片是 HTML 或 CSS 檔的一部分,那個檔案每次載入都要完整重傳一次。一個網站如果內嵌了 500KB 的圖片,訪客每看一頁就多傳 665KB 的文字。

HTTP/2 之後的變化

Data URI 流行的年代,瀏覽器對同一個網域的同時連線數有嚴格限制(通常是 6 個),所以「減少請求數」是很實在的優化。HTTP/2 之後多個請求可以在同一條連線上平行進行,這個好處大幅縮水。

現在比較合理的用法是:只內嵌那些極小、每一頁都會用到、而且不太會改的圖示。其餘的維持獨立檔案,讓快取發揮作用。


常見問題

為什麼字串比原檔還大?
Base64 用 64 個可列印字元來表示任意二進位資料,每 3 個位元組會變成 4 個字元,所以體積必然增加約 33%。加上 data:image/webp;base64, 這段前綴,這就是為什麼建議先縮小再編碼 — 一張 100KB 的圖轉出來會是 133KB 的文字。
什麼時候不該用 Data URI?
圖片超過 5–10KB 的時候。最大的問題是快取:獨立的圖片檔可以被瀏覽器快取,之後每一頁都直接用;內嵌的圖片是 HTML/CSS 的一部分,那個檔案每次載入都要完整重傳。內嵌一張 200KB 的圖,等於每一次瀏覽都多傳 266KB 的文字。
會不會影響網頁效能?
會,兩個方向都有。好處是少一次請求;壞處是 CSS 檔變大會延後整個樣式表的解析,而 CSS 是阻擋算繪的資源。一個塞滿 Data URI 的 CSS 檔可能會讓整頁的首次顯示都變慢。在 HTTP/2 之後,「少一次請求」的價值已經大幅下降。
產生的字串可以直接用在 <img src> 嗎?
可以,Data URI 在 src、CSS 的 url()、canvas 都能直接用。選「HTML img」形式會連寬高屬性一起給你 — 這兩個屬性很值得留著,瀏覽器可以先保留版位,避免圖片載入時整頁跳動。

接下來可能會用到

圖片處理很少一步到位。這幾個是跟「圖片轉 Base64」最常搭著用的:

處理完想直接分享?上傳媒體可以把圖片、照片或影片轉成一組短網址,還能設密碼、有效期限與瀏覽次數上限。也可以回到工具總覽看全部 12 個工具。


其他工具