Я пытаюсь отправить в том же запросе POST 2 изображения с информацией об их форме и текст на сервер Python Flask.Со стороны Vue + JS это то, что я делаю
let $axios = axios.create({
baseURL: `http://${host}:${port}/`,
headers: {
'Content-Type': 'application/json',
'Accept':'application/json'
}
})
...
return $axios.post(`endpoint1`,
JSON.stringify({
image: data.image_1, // Base64
image_shape: data.image_1_shape, //Base64 Uint16Array([600, 1360, 3]);
header_text: data.text_1,
body_text: data.text_2,
logo: data.image_2, // Base64
}),
{
headers: {
'accept': 'application/json',
'Content-Type': 'application/json'
}
})
.then(response => response.data)
Код, который я использую на стороне сервера, следующий:
input_image = np.frombuffer(base64.b64decode(content['image_1']), dtype=np.uint8)
input_shape =
np.frombuffer(base64.b64decode(content['image_1_shape']), dtype=np.uint16)
input_image = np.reshape(input_image,input_shape)
input_image = Image.fromarray(input_image)
Я получаю ошибку
не может преобразовать массив размером 127854 в форму (1360,600,3)
, что имеет смысл, поскольку 1360x600x3 не 127854 .Однако, когда я отправляю изображение из записной книжки Jupyter, используя следующий код, оно работает:
response = requests.get(url)
img = Image.open(BytesIO(response.content))
input_image = np.array(img)
input_shape = np.array(input_image.shape, dtype=np.uint16)
encoded_image_shape = base64.b64encode(input_shape).decode('utf-8')
bytes_image = base64.b64encode(input_image)
encoded_image=bytes_image.decode('utf-8')
Я пробовал по крайней мере 4 способа преобразования изображения из общей папки в Base64 (преобразование, которое я использую вхолст с методом toDataURL).Даже передача необработанного Base64 в axios не работает.Заранее спасибо за любую помощь!