Python 中的 Base64 應用方法|字串與圖片的編碼與解碼基礎與應用

1. 什麼是 Base64?Python 的基本使用方法

什麼是 Base64?

Base64 是一種將二進位數據轉換為純文字格式的編碼方法。它特別用於電子郵件、URL 和網頁通信,使二進位數據能夠安全地傳輸。這項技術允許我們對圖片或文件進行編碼,從而能夠以文字的形式安全地傳輸數據。

使用 Python 進行 Base64 編碼的優勢

在 Python 中,可以使用標準函式庫 base64 來進行 Base64 編碼與解碼,無需額外安裝套件,操作非常簡單。以下程式碼示範如何將字串轉換為 Base64 格式,並再度解碼回原始字串。

import base64

# 要編碼的數據
data = "こんにちは"
encoded_data = base64.b64encode(data.encode('utf-8'))
print(encoded_data)  # b'44GT44KT44Gr44Gh44Gv'

# 解碼回原始數據
decoded_data = base64.b64decode(encoded_data).decode('utf-8')
print(decoded_data)  # こんにちは
  • b64encode() 函數將字串轉換為 Base64 格式的字節串,而 encode('utf-8') 用於將字串轉換為字節數據。
  • b64decode() 函數用於解碼 Base64 編碼的數據,使其恢復為原始字串。

2. 在 Python 中進行 Base64 編碼的步驟

字串的編碼

Base64 編碼的過程首先需要將文字或數據轉換為字節串。以下程式碼示範了如何在 Python 中對字串進行編碼。

import base64

# 對字串進行編碼
text = "Python Base64"
encoded_text = base64.b64encode(text.encode('utf-8'))
print(encoded_text)  # b'UHl0aG9uIEJhc2U2NA=='

解釋:
encode('utf-8') 先將字串轉換為字節串,然後使用 b64encode() 進行 Base64 編碼。最終的結果會以字節串的形式顯示。

侍エンジニア塾

3. Base64 解碼的機制與實例

如何將編碼的數據還原為原始數據

以下示例演示如何將 Base64 編碼的數據解碼回原始字串。

import base64

# Base64 編碼的數據
encoded_data = b'UHl0aG9uIGlzIGdyZWF0'
# 解碼回原始字串
decoded_data = base64.b64decode(encoded_data).decode('utf-8')
print(decoded_data)  # Python is great

重點:
解碼後的數據會以字節串的形式返回,因此需要使用 decode('utf-8') 來轉換回字串格式。這樣可以正確還原原始的編碼內容。

4. 使用 Python 進行圖片文件的 Base64 編碼與解碼

將圖片文件轉換為 Base64 格式

Base64 不僅可以對字串進行編碼,也可以對圖片等二進位文件進行編碼。以下示例說明如何將圖片文件進行 Base64 編碼並保存為文字格式。

import base64

# 讀取圖片文件並進行 Base64 編碼
with open('image.png', 'rb') as img_file:
    encoded_image = base64.b64encode(img_file.read())
    print(encoded_image)

將 Base64 編碼的圖片文件還原

以下程式碼展示如何解碼 Base64 圖片數據,並將其重新存儲為圖片文件。

import base64

# Base64 編碼的圖片數據
encoded_image = b'...'  # 這裡放入編碼後的數據

# 進行解碼並保存為圖片文件
with open('decoded_image.png', 'wb') as img_file:
    img_file.write(base64.b64decode(encoded_image))

解釋:
b64encode() 會將圖片文件轉換為 Base64 字串,而 b64decode() 則可以將編碼後的數據還原為原始的二進位格式,並保存回圖片文件。

侍エンジニア塾

5. Base64 的實際應用範例

在 Web 應用程式中的應用

Base64 在 Web 應用程式與 API 中非常實用。例如,可以將圖片轉換為 Base64 格式,然後作為 JSON 回應的一部分傳遞。以下是一個簡單的 API 範例,它將圖片編碼為 Base64 並返回 JSON 格式的數據。

from flask import Flask, jsonify
import base64

app = Flask(__name__)

@app.route('/image')
def get_image():
    with open('image.png', 'rb') as image_file:
        encoded_image = base64.b64encode(image_file.read()).decode('utf-8')
    return jsonify({'image': encoded_image})

if __name__ == '__main__':
    app.run(debug=True)

此 API 會將圖片轉換為 Base64 編碼後,以 JSON 格式返回。這種方法在需要通過 API 傳輸圖片數據時非常有用,例如在前端應用程式中直接顯示 Base64 圖片,而無需請求靜態文件。

6. Base64 編碼的注意事項與限制

數據大小增加的問題

Base64 編碼有一個缺點,那就是會增加數據大小。具體來說,Base64 會將 3 個字節的原始數據轉換為 4 個字節的 Base64 字串,導致文件大小增加約 33%。例如,1MB 的圖片經過 Base64 編碼後,大小會變為約 1.33MB。

數據大小增加的具體案例

舉例來說,一個 100KB 的文件經過 Base64 編碼後,大小會增加到約 133KB。因此,在頻繁傳輸大文件時,可能會影響傳輸速度與存儲空間,因此應考慮壓縮或其他優化技術。

總結

在本文中,我們介紹了如何使用 Python 進行 Base64 編碼與解碼,包括:

  • Base64 的基本概念與用途
  • 如何對字串與圖片進行 Base64 編碼與解碼
  • Base64 在 Web 應用程式與 API 中的應用
  • Base64 編碼的優勢與限制

Base64 是一種實用的技術,特別適用於網頁應用、API 資料傳輸等場景。不過,由於 Base64 會增加數據大小,因此在使用時應根據具體需求選擇合適的方式來優化數據傳輸與存儲。如果你在開發專案時需要處理二進位數據,Base64 將是一個值得考慮的選擇。

RUNTEQ(ランテック)|超実戦型エンジニア育成スクール