python 使用flask开发API ,接收/返回 图片数据,简单案例 您所在的位置:网站首页 python作为后端接口 python 使用flask开发API ,接收/返回 图片数据,简单案例

python 使用flask开发API ,接收/返回 图片数据,简单案例

2023-09-05 11:05| 来源: 网络整理| 查看: 265

环境:python3

库:flask

 

其实从本质上来说,无论是图片还是文字或者字符,都是数据,即最原始的一串0和1组成的二进制数据,API接收或者返回图片,本质上也就是接收或返回一段数据流。

向服务器发送图片,大致步骤就是先将以二进制的方式打开,再post到服务器。

从服务器接收图片,我这边的做法是服务器端将图片转化成base64字节流形式返回,客户端收到这串字节数据,然后通过base64将字节转化为图片。

服务器端代码:

import base64 from flask import request from flask import Flask import os app=Flask(__name__) # 定义路由 @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() 小贴士:

如果此服务用nginx部署,需要对config文件做出修改:

nginx默认上传文件的大小是1M,若需要修改上限,

打开nginx配置文件 nginx.conf,

在http{}字段中加入 client_max_body_size 10m; 10m为允许最大上传的大小。

然后重启nginx。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有