Как отправить изображение Base64 с помощью запросов Python и FastAPI?Python

Программы на Python
Anonymous
 Как отправить изображение Base64 с помощью запросов Python и FastAPI?

Сообщение Anonymous »

Я пытаюсь внедрить код для передачи стиля изображения на основе FASTAPI. Я нашел эффективным преобразовать байт изображения в BASE64 и передавать его. получил его успешно. Тем не менее, я сталкиваюсь с некоторыми трудностями в восстановлении байтов изображения в ndarray. < /P>
Я получаю следующие ошибки: < /p>
image_array = np.frombuffer(base64.b64decode(image_byte)).reshape(image_shape)

ValueError: cannot reshape array of size 524288 into shape (512,512,4)
< /code>
Это мой клиент -код: < /p>
import base64
import requests
import numpy as np
import json
from matplotlib.pyplot import imread
from skimage.transform import resize

if __name__ == '__main__':
path_to_img = "my image path"

image = imread(path_to_img)
image = resize(image, (512, 512))

image_byte = base64.b64encode(image.tobytes())
data = {"shape": image.shape, "image": image_byte.decode()}

response = requests.get('http://127.0.0.1:8000/myapp/v1/filter/a', data=json.dumps(data))
< /code>
И это код моего сервера: < /p>
import json
import base64
import uvicorn
import model_loader
import numpy as np

from fastapi import FastAPI
from typing import Optional

app = FastAPI()

@app.get("/")
def read_root():
return {"Hello": "World"}

@app.get("/myapp/v1/filter/a")
async def style_transfer(data: dict):
image_byte = data.get('image').encode()
image_shape = tuple(data.get('shape'))
image_array = np.frombuffer(base64.b64decode(image_byte)).reshape(image_shape)

if __name__ == '__main__':
uvicorn.run(app, port='8000', host="127.0.0.1")


Подробнее здесь: https://stackoverflow.com/questions/707 ... nd-fastapi

Вернуться в «Python»