上传图片信息的方法错误导致的性能损耗

78 阅读1分钟

由于本地机器没有显卡,需要从本地加载视频里的关键帧调用服务器的模型服务。但是发现响应非常慢,分析后发现原因在于:

本地将图片转为了list,太大。

具体情况

一张分辨率为3840*2160的图片

png只占24k

转换为ndarray,再转为list,保存为json占了77M的格式

所以如果采用接口,直接传图片。原因应该是png的压缩算法吧。

代码

尽量避免存储文件的代码写法

客户端

from PIL import Image
from io import BytesIO
import requests


image = Image.open('a.png')
buffered = BytesIO()
image.save(buffered, format='JPEG')
binary_data = buffered.getvalue()
buffered.seek(0)

payload = {}
files = [("file", binary_data)]
response = requests.request(
    "POST",
    url="url",
    data=payload,
    files=files,
)

服务器端

from flask import request


file = request.files.get("file", "")
img = Image.open(BytesIO(file.read()))
img.show()