У меня есть несколько изображений, которые мне нужно передать на сервер с помощью JSON. Я решил использовать Base64 в качестве системы кодирования. В Python 2 я мог просто использовать:
with open(path, "rb") as imageFile:
img_file = imageFile.read()
img_string = base64.b64encode(img_file)
но в Python 3 это больше не работает. Что мне нужно изменить, чтобы это в Python 3 работало?
Я следил за решением из этого ссылка на сайт, похоже, он работает для меня. Поэтому, когда вы читаете изображение в двоичном формате, преобразуйте его в строку, а затем просто закодируйте строку с помощью base64. Следующее решение взято по ссылке выше. Вот протестированный код.
import base64
image = open(image, 'rb')
image_read = image.read()
image_64_encode = base64.encodestring(image_read)
base64.standard_b64encode (content) - еще один способ сделать то же самое. Я закодировал изображение, используя этот метод, проверьте код. Пожалуйста, проверьте ссылку. docs.python.org/3.7/library/…
Наконец я нашел код, работающий на Python 3.7:
# Get the image
image = open(path, 'rb')
image_read = image_read()
# Get the Byte-Version of the image
image_64_encode = base64.b64encode(image_read)
# Convert it to a readable utf-8 code (a String)
image_encoded = image_64_encode.decode('utf-8')
return image_encoded
Пару раз пробовал, но на 3.7 не работает.
base64.encodestring(s)
устарел, начиная с Python 3.1.