发送多个base64字符串到Python Flask

时间:2019-03-05 10:26:54

标签: javascript python flask base64 axios

我正在尝试将相同的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也行不通。预先感谢您的帮助!

0 个答案:

没有答案