Base64 轉圖片
请在左侧粘贴图片 Base64
線上將 Base64 編碼資料還原為可預覽的圖片並下載,支援 PNG/JPG/WebP/GIF/SVG 等 7+ 常見圖片格式。自動辨識 Data URL 前綴,瀏覽器內直接預覽,適合介面除錯和編碼驗證。
相關推薦
什麼是 Base64 轉圖片?
Base64 轉圖片是 Base64 編碼的逆向過程:將 Base64 編碼的字串還原為原始的二進位圖片資料(如 PNG / JPG / WebP / GIF / SVG 等格式),並在瀏覽器內直接預覽或下載為本機圖片檔案。這是處理 API 回傳圖片、內嵌資源(Data URL)、郵件附件 Base64 等場景的必備工具。
**核心原理:** Base64 把二進位資料編碼為 64 個可列印 ASCII 字元(A-Z、a-z、0-9、+、/),轉圖片就是把這段 ASCII 字串還原回原始的二進位位元組流,再由瀏覽器按指定 MIME 類型(image/png 等)解析為圖片像素展示。Data URL(如 `data:image/png;base64,iVBORw0KGgo...`)則是 Base64 + MIME 前綴的組合形式,工具會自動辨識並處理。
**典型使用場景:** ①API 除錯:很多 API 回傳圖片驗證碼、使用者頭像、電子簽名時直接回傳 Base64 字串,前端需要還原檢視;②前端開發:Data URL 嵌入的小圖示(CSS background-image: url(data:image/png;base64,...))可貼到工具中檢視實際效果;③郵件附件還原:MIME Base64 編碼的附件可解碼回原圖片儲存;④爬蟲資料:擷取的圖片 Base64 可解碼後儲存為本機檔案;⑤OCR 前處理:解碼後用 OCR 工具識別圖片內容。
**支援的圖片格式:** 工具支援所有瀏覽器原生辨識的圖片 MIME 類型:PNG (image/png)、JPG/JPEG (image/jpeg)、WebP (image/webp)、GIF (image/gif)、SVG (image/svg+xml)、BMP (image/bmp)、AVIF (image/avif)、ICO (image/x-icon) 等。每種格式有不同的壓縮演算法和適用場景:PNG 無損適合圖示和截圖,JPG 有損適合照片,WebP 現代瀏覽器推薦,SVG 向量適合圖示和 logo。
**解碼安全性:** 所有解碼操作在瀏覽器內透過 JavaScript 完成(基於 `atob()` + `TextDecoder` 或 `Blob` API),圖片二進位資料不上傳任何伺服器。包含敏感資訊的 Base64 字串(如使用者頭像、內部截圖)可放心使用,關閉頁面後所有資料自動清除。
適用場景
- 將 API 回傳的 Base64 圖片資料還原為可預覽和下載的圖片檔案
- 驗證前端內嵌圖片資源(Data URL 格式)是否正確編碼
- 除錯圖片上傳介面時確認 Base64 內容是否完整
- 將 Base64 圖片儲存為本機 PNG/JPG 檔案用於設計或文件
- 解碼郵件附件 Base64 編碼還原為圖片
- 爬蟲擷取的圖片 Base64 還原後儲存到磁碟
- 解碼 Data URL 驗證 SVG 圖示實際渲染效果
- 把 OCR / AI 介面回傳的 Base64 圖片還原為本機檔案檢視
使用方法
- 貼上 Base64 編碼的圖片資料(支援帶或不帶 Data URL 前綴,如 data:image/png;base64,iVBORw0KG...)
- 工具自動偵測 MIME 類型並解碼(在 Data URL 中辨識,或根據內容頭嗅探)
- 右側即時顯示圖片預覽和檔案大小、尺寸資訊
- 點擊「下載」儲存為本機圖片檔案,或右鍵圖片「圖片另存為」
- 如解碼失敗,可手動指定 MIME 類型或使用 Base64 Clean 工具前處理
功能特點
- 線上圖片預覽:解碼後直接在瀏覽器內顯示圖片,無需下載到本機
- 多格式支援:支援 PNG / JPG / WebP / GIF / SVG / BMP / AVIF 等 7+ 常見圖片 MIME 類型
- Data URL 自動辨識:自動剝離 data:image/png;base64, 前綴,提取純 Base64 內容解碼
- 純 Base64 輸入:支援不帶前綴的純 Base64 字串,可指定 MIME 類型
- 圖片檔案下載:支援一鍵儲存解碼後的圖片為本機 PNG/JPG 檔案
- 即時字元統計:即時顯示輸入字元數、解碼後位元組數,方便評估圖片大小
- 錯誤偵測:解碼失敗時提示具體錯誤位置(無效 Base64 字元、長度不對、MIME 不匹配)
- 瀏覽器本機零上傳:所有解碼和預覽在瀏覽器內完成,不經過任何伺服器
- 完全反向相容:與「圖片轉 Base64」工具配對使用,形成完整的雙向轉換工作流
程式碼範例
JavaScript:瀏覽器原生解碼 + Blob URL 預覽
javascript使用瀏覽器原生 atob() + TextDecoder + Blob API 解碼 Base64 並在瀏覽器內顯示圖片。
// Base64 → 圖片(瀏覽器原生實作)
function base64ToImage(base64String, mimeType = 'image/png') {
// 1. 去除 Data URL 前綴(如果有)
const clean = base64String.replace(/^data:image\/\w+;base64,/, '');
// 2. 瀏覽器原生 atob() 解碼為二進位字串
const binary = atob(clean);
// 3. 轉為 Uint8Array
const bytes = new Uint8Array(binary.length);
for (let i = 0; i < binary.length; i++) {
bytes[i] = binary.charCodeAt(i);
}
// 4. 建立 Blob URL 用於 <img> 標籤預覽
const blob = new Blob([bytes], { type: mimeType });
const url = URL.createObjectURL(blob);
// 5. 設定 img.src 即可預覽
const img = document.createElement('img');
img.src = url;
img.onload = () => {
console.log(`圖片尺寸: ${img.width}x${img.height}`);
console.log(`檔案大小: ${bytes.byteLength} bytes`);
};
return { img, url, size: bytes.byteLength };
}
// 使用範例:
const result = base64ToImage('iVBORw0KGgoAAAANSUhEUgAAAAUA...');
document.body.appendChild(result.img);
// 釋放 Blob URL(避免記憶體洩漏)
setTimeout(() => URL.revokeObjectURL(result.url), 60000);Python:base64 函式庫解碼並儲存圖片
pythonPython 標準函式庫 base64 解碼 Base64 資料為圖片二進位流,再用 PIL/Pillow 或內建檔案操作儲存。
import base64
from pathlib import Path
def base64_to_image(base64_string: str, output_path: str, mime_type: str = 'image/png'):
"""將 Base64 字串解碼並儲存為圖片檔案"""
# 1. 去除 Data URL 前綴
if base64_string.startswith('data:image'):
# 格式: data:image/png;base64,iVBORw0...
header, base64_string = base64_string.split(',', 1)
# 自動從 header 提取 MIME
if 'image/' in header:
mime_type = header.split('data:')[1].split(';')[0]
# 2. 解碼
image_bytes = base64.b64decode(base64_string)
# 3. 儲存到檔案
output_file = Path(output_path)
output_file.parent.mkdir(parents=True, exist_ok=True)
output_file.write_bytes(image_bytes)
print(f"✅ 已儲存: {output_file}")
print(f" 檔案大小: {len(image_bytes):,} bytes")
print(f" MIME 類型: {mime_type}")
return output_file
# 使用範例:
# 1. 從 API 回應中取得的 Base64 字串
api_base64_response = "iVBORw0KGgoAAAANSUhEUgAA..."
# 2. 解碼並儲存
base64_to_image(api_base64_response, 'output/captcha.png')
# 3. 可選:用 PIL 進一步處理
try:
from PIL import Image
img = Image.open('output/captcha.png')
print(f"圖片尺寸: {img.size}")
img.save('output/captcha.png', optimize=True)
except ImportError:
print('安裝 Pillow 以處理圖片: pip install Pillow')Java:java.util.Base64 + ImageIO 解碼圖片
javaJava 標準函式庫 Base64 解碼圖片二進位流,配合 ImageIO / BufferedImage 處理圖片中繼資料。
import java.io.*;
import java.util.Base64;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
public class Base64ToImage {
public static void main(String[] args) throws Exception {
String base64String = "iVBORw0KGgoAAAANSUhEUgAA...";
String mimeType = "image/png";
// 1. 去除 Data URL 前綴(如果有)
if (base64String.startsWith("data:image")) {
int commaIdx = base64String.indexOf(',');
String header = base64String.substring(0, commaIdx);
base64String = base64String.substring(commaIdx + 1);
// 從 header 提取 MIME
if (header.contains("image/")) {
mimeType = header.substring(header.indexOf("data:") + 5, header.indexOf(";"));
}
}
// 2. Base64 解碼
byte[] imageBytes = Base64.getDecoder().decode(base64String);
// 3. 儲存到檔案
String extension = mimeType.substring("image/".length());
File outputFile = new File("output." + extension);
try (FileOutputStream fos = new FileOutputStream(outputFile)) {
fos.write(imageBytes);
}
System.out.println("✅ 已儲存: " + outputFile.getAbsolutePath());
System.out.println(" 檔案大小: " + imageBytes.length + " bytes");
// 4. (可選)讀取圖片中繼資料
ByteArrayInputStream bais = new ByteArrayInputStream(imageBytes);
BufferedImage image = ImageIO.read(bais);
if (image != null) {
System.out.println("圖片尺寸: " + image.getWidth() + "x" + image.getHeight());
}
}
}常見問題
支援哪些圖片格式?
支援 PNG、JPG、WebP、GIF、SVG、BMP、AVIF、ICO 等所有瀏覽器原生辨識的圖片 MIME 類型。工具會根據 Data URL 中的 MIME 前綴或輸入特徵自動判斷,也可在介面手動指定 MIME 類型。選擇正確的格式可以確保瀏覽器正確解碼和顯示。
輸入需要帶 data:image/png;base64 前綴嗎?
不需要。工具支援兩種格式輸入:①純 Base64 字串(如 iVBORw0KGgoAA...),需要在介面選擇 MIME 類型(如 PNG / JPG);②Data URL 格式(如 data:image/png;base64,iVBORw0KGgo...),工具自動辨識前綴中的 MIME 類型並解碼。兩種輸入方式都支援。
可以在瀏覽器裡直接預覽嗎?
可以。解碼後的圖片會透過 Blob URL 在瀏覽器內直接顯示,支援線上預覽。確認內容無誤後,再下載為本機檔案或複製 Data URL 用於 HTML/CSS 內嵌。整個預覽過程無需網路請求。
和 Base64 轉檔案工具有什麼區別?
Base64 轉圖片專門針對圖片格式最佳化:①自動辨識 MIME 類型;②透過 Blob URL 在瀏覽器內直接預覽;③根據 MIME 自動設定檔案副檔名(.png / .jpg 等);④圖片尺寸資訊展示。Base64 轉檔案是通用工具,適合任意二進位檔案的還原和下載(如 PDF、ZIP、音訊等)。
解碼後圖片顯示不完整怎麼辦?
可能原因:①Base64 字串被截斷(檢查長度是否完整);②MIME 類型指定錯誤(如把 PNG 資料當作 JPG 解碼);③原始資料本身已損毀。建議:①確認來源 Base64 完整;②嘗試切換不同 MIME 類型;③用 Base64 Validate 工具檢查合法性。
Base64 體積會比原圖大多少?
Base64 編碼會使原始二進位資料體積增加約 33%(3 位元組 → 4 字元)。例如 100KB PNG 編碼後約 133KB Base64 字串。所以 Base64 適合小型圖片(< 10KB),大圖片建議使用 HTTP URL 直接傳輸。
支援 SVG 向量圖嗎?
支援。SVG 是一種基於 XML 的向量圖格式,Base64 編碼後可直接嵌入 HTML <img> 或 CSS background-image。解碼後會在瀏覽器內以向量方式渲染,可無損縮放。注意 SVG 中可能含 JavaScript 程式碼,使用時需注意 XSS 安全。
如何儲存為指定格式?
解碼後點擊下載按鈕,工具會根據解碼時的 MIME 類型自動添加對應副檔名(image/png → .png、image/jpeg → .jpg)。如需轉換格式(如 PNG → JPG),建議先解碼後用其他工具(如 Canvas / ImageMagick)轉換。
解碼後圖片是空白或損毀?
常見原因:①Base64 包含換行符或空格未清理——先用 Base64 Clean 工具前處理;②padding(=)缺失——本工具會自動補全;③MIME 類型與原資料不匹配——檢查來源 API 回傳的 Content-Type 或手動嘗試其他 MIME;④來源 Base64 在傳輸過程中被截斷——重新取得完整字串。
支援大圖片(>10MB)嗎?
支援,但瀏覽器對超大圖片渲染效能下降。10MB Base64(約 7.5MB 原圖)解碼通常流暢;超過 50MB 可能出現記憶體警告。建議:①先用 base64-clean 去除空白;②分區塊解碼大圖;③確認瀏覽器記憶體足夠(建議 4GB+)。
故障排查
解碼後圖片顯示空白
可能 MIME 類型不匹配或 Base64 不完整。檢查:1)來源 API 回傳的 Content-Type 標頭;2)手動切換 MIME 類型重試;3)確認 Base64 字串完整(長度符合預期)。
InvalidCharacterError 解碼失敗
Base64 字串包含非法字元(空格、換行、中文等)。先用 Base64 Clean 工具去除所有空白和非法字元,然後再轉換。
下載的圖片副檔名錯誤
檢查解碼時的 MIME 類型是否與原圖一致。如來源 API 回傳 image/jpeg 但 Base64 資料實際是 PNG,下載後副檔名會是 .jpg 但實際是 PNG 格式。建議從 MIME 前綴或 Content-Type 標頭確認原始格式。
解碼大圖片時瀏覽器卡死
超過 50MB 的 Base64 字串可能導致記憶體溢位。建議:①先用 base64-clean 工具去除空白字元;②分批解碼大圖(如按 tile 切分);③確認瀏覽器記憶體足夠(建議 4GB+ 可用記憶體);④使用服務端 Node.js / Python 指令碼處理超大圖片。
SVG 圖片解碼後無法顯示
SVG 是基於 XML 的向量格式,解碼後必須確保:1)MIME 類型使用 image/svg+xml;2)SVG 中不能含未轉義的特殊字元;3)部分瀏覽器對 SVG 中的 JavaScript 程式碼有安全限制。建議先用 XML 解析工具驗證 SVG 合法性。
術語表
- Base64
- 用 64 個 ASCII 字元表示二進位資料的編碼方式,定義在 RFC 4648 中。本工具的逆向:把 Base64 字串還原為原始圖片二進位。
- Data URL
- RFC 2397 定義的內嵌 URL 格式:data:image/<MIME>;base64,<資料>。可直接在 HTML img src、CSS background-image 中使用。本工具自動辨識並剝離前綴。
- MIME 類型
- 網際網路媒體類型,如 image/png、image/jpeg。瀏覽器根據 MIME 決定如何解析位元組流為圖片。
- PNG
- 無損壓縮點陣圖格式,支援透明通道。常用於圖示、截圖、需要保留細節的圖片。Base64 後體積約為原 1.33 倍。
- JPG/JPEG
- 有損壓縮點陣圖格式,適合照片。壓縮率高但不支援透明。Base64 後體積約為原 1.33 倍。
- WebP
- Google 開發的現代圖片格式,同時支援有損/無損壓縮和透明通道。比 PNG/JPG 小 25-35%。
- Blob (Binary Large Object)
- 瀏覽器原生二進位物件,可包裝 Base64 解碼後的位元組流為圖片 Blob URL 用於預覽和下載。
8 種圖片格式對比表
不同圖片格式有不同的壓縮演算法、特性、適用場景。
| 格式 | MIME 類型 | 壓縮類型 | 透明支援 | 典型場景 |
|---|---|---|---|---|
PNG | image/png | 無損 | ✅ | 圖示 / 截圖 / Logo |
JPG | image/jpeg | 有損 | ❌ | 照片 / 風景圖 |
WebP | image/webp | 有損/無損 | ✅ | 現代 Web 推薦 |
GIF | image/gif | 無損 (256色) | ✅ (1-bit) | 小動畫 / 簡單圖示 |
SVG | image/svg+xml | 向量 | ✅ | Logo / 圖示 / 插畫 |
BMP | image/bmp | 無 | 可選 | Windows 系統圖 |
AVIF | image/avif | 有損/無損 | ✅ | 下一代圖片格式 |
ICO | image/x-icon | 無損 | ✅ | 網站 favicon |
Data URL vs HTTP URL 圖片載入對比
解碼後的圖片可作為 Data URL 直接嵌入到 HTML/CSS,與傳統的 HTTP URL 對比。
| 維度 | Data URL | HTTP URL |
|---|---|---|
| HTTP 請求數 | 0 | 1 次 |
| 快取複用 | 難 | 易(CDN / 瀏覽器) |
| 體積 | 原圖 + 33% | 原圖大小 |
| 適合大小 | < 10 KB | 任意大小 |
| 壓縮傳輸 | 否(已編碼) | gzip / Brotli |
| CSP 限制 | 可能 | 一般允許 |
| 伺服器儲存 | 無需 | 需要 |
| 離線存取 | ✅(檔案級) | ❌(需快取) |
5 種 Base64 轉圖片常見錯誤對照表
遇到解碼錯誤時按下表快速定位問題。
| 錯誤現象 | 可能原因 | 解決方法 |
|---|---|---|
| 解碼失敗:InvalidCharacterError | 包含空格、換行、非 Base64 字元 | 用 Base64 Clean 工具前處理 |
| 圖片顯示空白 | MIME 類型與原資料不匹配 | 切換正確 MIME(如 PNG 資料用 image/png) |
| 圖片顯示不完整 | Base64 字串被截斷 | 重新取得完整 Base64 字串 |
| Padding 報錯 | URL-safe Base64 省略 padding | 用 Base64 Padding 工具補齊 = |
| 瀏覽器記憶體溢位 | 圖片過大(> 50MB) | 分區塊解碼或使用圖片壓縮工具 |
Authoritative References
- 安全字串比較
- 二進位轉換
- 凱薩密碼
- 摩斯密碼
- 十六進位轉換
- 影片轉 Base64
- Base64 轉影片
- 圖片轉 Base64
- Base64 轉圖片
- 文字轉 Base64
- Base64 轉文字
- 檔案雜湊校驗
- 檔案轉 Base64
- Base64 轉檔案
- 音訊轉Base64
- Base64轉音訊
- AES 加密解密
- DES 加密解密
- Base32 編碼解碼
- Base58 編碼解碼
- Base64 編碼
- Base64 解碼
- Base64 比較
- Base64 拆分
- Base64 多行合併
- Base64 格式化
- Base64 格式檢查
- Base64 批次編碼
- Base64 批次解碼
- Base64 清理
- Base64 填充處理
- Base64 長度統計
- Base64 轉十六進位
- Base64 DataURL 轉換
- Base64-Hex 互轉
- Base85 編解碼器
- HMAC 生成與驗證
- PBKDF2 金鑰派生
- MD5 雜湊
- SHA-256 雜湊
- SHA1 雜湊
- SHA512 雜湊
- JWT 工具
- HTML 實體編碼解碼
- Unicode 跳脫
- URL 編碼
- URL Safe Base64
- MIME Base64
- Java 混淆
- JS 混淆
- PHP 混淆
- Python 混淆