Как Base64 кодировать изображение с помощью Python - PullRequest
0 голосов
/ 16 мая 2018

У меня есть поток данных, поступающий с устройства, и мне нужно преобразовать его в формат JPEG, а затем закодировать с помощью base64, чтобы передать его по сети.

Мой код Python 2.7 до сих пор выглядит так:

from PIL import Image
import io

image = Image.open(io.BytesIO(self.imagebuffer)) # Image buffer contains the image data from the device.
image.save("test.jpg") # Writes the image to the disk in jpeg format
image.show() # Opens the image using the OS image view

Я вижу, что у меня есть изображение, которое я хочу, и могу сохранить его на диск в формате JPEG.

Что я не понимаю, так это то, могу ли я с помощью base64 кодировать изображение из объекта image или мне нужно сначала записать его на диск. Я хотел бы, если возможно, не писать.

Второй вопрос, который у меня есть, что PIL делает в этом процессе? Это берет данные и помещает требуемые специальные коды в файл, чтобы сделать его файлом JPEG? Я думаю, что ответ на этот вопрос будет да , так как я могу изменить расширение файла на .bmp и правильный файл будет записан на диск.

Итак, можно ли получить версию jpeg-файла в кодировке base64 из объекта image без предварительной записи на диск?

Ответы [ 4 ]

0 голосов
/ 16 мая 2018

Этот код выполняет работу:

from PIL import Image
import io
import base64
import cStringIO

image = Image.open(io.BytesIO(imagebuffer))
encodingbuffer = cStringIO.StringIO()
image.save(encodingbuffer, format="JPEG")
encodedimage = base64.b64encode(encodingbuffer.getvalue())
0 голосов
/ 16 мая 2018

Попробуйте этот код

Формат изображения base64

Код Python:

import os
import base64

image = 'test.jpg'

encoded_string = ""
with open(image, "rb") as image_file:
    encoded_string = base64.b64encode(image_file.read())
    file = encoded_string
0 голосов
/ 16 мая 2018
  1. Сохранение IMG-файла в буфере - не касается диска* base64 данные
  2. сбросить в файл
0 голосов
/ 16 мая 2018

Так же просто, как:

import base64

encoded_string = base64.b64encode(image.read())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...