TypeError: ожидаемый байтовоподобный объект, а не str - PullRequest
0 голосов
/ 16 ноября 2018

Я знаю, что этот вопрос задавался много раз, но, пожалуйста, посмотрите один раз на мою проблему.

Я отправляю base64 данные изображения из углового в питонную колбу , но когда я обрабатываю эти base64 данные на сервере фляги (python3), это выдает мне ошибку

TypeError: expected bytes-like object, not str

мой код Javascript:

window['__CANVAS'].toDataURL("image/png");

Вывод вышеуказанной строки:

"data:image/png;base64,iVBORw0KGgoAAAANSUhEUg....."

Я получаю на флеш-сервере те же данные, что и строку.

Код на python-сервере, который использует вышеуказанные данные base 64:

def convert_to_image(base64_code):
  image_64_decode = base64.decodebytes(base64_code)
  image_result = open('baseimage.jpg', 'wb')
  image_result.write(image_64_decode)
  img_rgb = cv2.imread('baseimage.jpg')
  return img_rgb

затем выдает следующую ошибку:

File "/home/shubham/py-projects/DX/Web/app/base64toimage.py", line 10, in convert_to_image    
  image_64_decode = base64.decodebytes(base64_code)
File "/usr/lib/python3.5/base64.py", line 552, in decodebytes    
  _input_type_check(s)
File "/usr/lib/python3.5/base64.py", line 521, in _input_type_check  
  raise TypeError(msg) from err 
TypeError: expected bytes-like object, not str

выше Python функция работает нормально, если я конвертирую изображение с помощью этой функции

import base64

with open("t.png", "rb") as imageFile:
  str = base64.b64encode(imageFile.read())
  print str

помогите пожалуйста решить этот вопрос? Я новичок в Python.

1 Ответ

0 голосов
/ 16 ноября 2018

base64.decodebytes принимает только байтовые массивы, используйте base64.b64decode, вместо этого он также принимает строки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...