Base64 編碼的用途
Base64 是一種將二進位資料(如圖片)轉換為純文字格式的編碼方式,常見的應用場景包括:
- 在 JSON API 中傳遞圖片資料
- 在 HTML/CSS 中以 Data URI 嵌入小圖片,減少 HTTP 請求
- 在電子郵件中傳遞附件
- 將圖片存入資料庫的文字欄位
方法一:從本地檔案讀取並轉換
1
2
3
4
5
6
7
8
9
10
11
12
|
import base64
# 開啟圖片檔案(以二進位模式 "rb" 讀取)
with open("a.jpg", "rb") as fp:
img_data = fp.read()
# 編碼為 base64(回傳 bytes 物件)
img_b64 = base64.b64encode(img_data)
# 轉為字串(方便後續使用)
img_b64_str = img_b64.decode("utf-8")
print(img_b64_str)
|
方法二:從網路下載圖片後轉換
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import base64
import requests
imgurl = "https://example.com/image.jpg"
# 下載圖片(content 為 bytes 物件)
response = requests.get(imgurl)
imgdata = response.content
# 編碼為 base64
imgb64 = base64.b64encode(imgdata)
imgb64_str = imgb64.decode("utf-8")
print(imgb64_str)
|
解碼方法
1
2
3
4
5
6
7
8
9
|
import base64
# 將 base64 字串還原為原始二進位資料
img_b64_str = "..." # 你的 base64 字串
img_data = base64.b64decode(img_b64_str)
# 儲存為圖片檔案
with open("output.jpg", "wb") as f:
f.write(img_data)
|
在網頁中使用 Data URI
Base64 編碼後,可直接嵌入 HTML 或 CSS,格式為:
1
|
data:<MIME type>;base64,<base64 string>
|
HTML 範例:
1
2
|
<!-- 直接在 img 標籤中嵌入圖片 -->
<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgAB..." alt="內嵌圖片">
|
CSS 範例:
1
2
3
|
.icon {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANS...");
}
|
Python 產生 Data URI:
1
2
3
4
5
6
7
|
import base64
with open("logo.png", "rb") as f:
b64 = base64.b64encode(f.read()).decode("utf-8")
data_uri = f"data:image/png;base64,{b64}"
print(data_uri)
|
注意事項
- Base64 編碼後的資料大小約為原始大小的 4/3 倍(約 33% 增加)。
- 建議只對小圖片(< 10KB)使用 Data URI,大圖片應使用一般的圖片 URL 以利瀏覽器快取。
base64.b64encode() 回傳的是 bytes 物件,需用 .decode("utf-8") 轉為字串。