Отправить несколько строк base64 в Python Flask - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь отправить в том же запросе 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 не работает.Заранее спасибо за любую помощь!

...