python 使用flask開發API ,接收/返回 圖片數據,簡單案例

環境:python3

庫:flask

 

其實從本質上來說,無論是圖片還是文字或者字符,都是數據,即最原始的一串0和1組成的二進制數據,API接收或者返回圖片,本質上也就是接收或返回一段數據流。

向服務器發送圖片,大致步驟就是先將以二進制的方式打開,再post到服務器。

從服務器接收圖片,我這邊的做法是服務器端將圖片轉化成base64字節流形式返回,客戶端收到這串字節數據,然後通過base64將字節轉化爲圖片。

服務器端代碼:

# 定義路由
@app.route("/photo", methods=['POST'])
def get_frame():
    # 接收圖片
    upload_file = request.files['file']
    # 獲取圖片名
    file_name = upload_file.filename
    # 文件保存目錄(桌面)
    file_path=r'C:/Users/Administrator/Desktop/'
    if upload_file:
        # 地址拼接
        file_paths = os.path.join(file_path, file_name)
        # 保存接收的圖片到桌面
        upload_file.save(file_paths)
        # 隨便打開一張其他圖片作爲結果返回,
        with open(r'C:/Users/Administrator/Desktop/1001.jpg', 'rb') as f:
            res = base64.b64encode(f.read())
            return res



if __name__ == "__main__":
    app.run()

 

 

客戶端代碼:

import requests
import base64

# API地址
url = "http://127.0.0.1:5000/photo"
# 圖片地址
file_path='C:/Users/Administrator/Desktop/111.jpg'
# 圖片名
file_name=file_path.split('/')[-1]
# 二進制打開圖片
file=open(file_path,'rb')
# 拼接參數
files = {'file':(file_name,file,'image/jpg')}
# 發送post請求到服務器端
r = requests.post(url,files = files)
# 獲取服務器返回的圖片,字節流返回
result = r.content
# 字節轉換成圖片
img = base64.b64decode(result)
file = open('test.jpg','wb')
file.write(img)
file.close()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章