我正在尝试将相同的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种将公用文件夹中的Image转换为Base64的方法(使用toDataURL方法将在画布中使用的图像转换为Base64)。即使将原始Base64传递给axios也行不通。预先感谢您的帮助!