Отправить png как поле json - PullRequest
       4

Отправить png как поле json

0 голосов
/ 17 декабря 2018

Я пытаюсь отправить png изображение, снятое ffmpeg throw RabbitMQ.Когда я отправил только png в теле RabbitMQ, все было в порядке.

Но теперь мне нужно добавить некоторую информацию в сообщение.Я думал, что отправить png как json легко, но объект png является байтовым объектом, и его необходимо преобразовать в строку, потому что, если я не преобразую его в строку, исключение выброса json.dumps "не сериализуемо в JSON".

Я пытался преобразовать байт в str после того, как отправка прошла успешно, но когда я возвращаюсь к жизни, я не могу сохранить его как файл png, который он сохраняет как текстовый файл.Но мне нужно сохранить его в формате PNG.

Отправитель

data['img']=str(image)
data['camera_id']=0
channel.basic_publish(exchange='',
                  routing_key='hello',
                  body=json.dumps(data))

Получатель

def callback(ch, method, properties, body):
    data= json.loads(body.decode("utf-8"))
    print(data['camera_id'])
    f = open("pypeg.png",'wb')
    f.write(data['img'].encode())
    f.close()

Может быть, вы теперь, как отправить только изображение в теле RabbitMQ и отправить свойства другим способом.Или как кодировать / кодировать изображение в формате png для правильного преобразования в json и сохранения в файл.

Я пытался использовать base64.encode (), но json.dumps отправляет то же исключение, поэтому я использую decode ('utf-8')

data['img']=base64.b64encode(image).decode('utf-8')

поэтому я отредактировал получатель

b1 = data['img'].encode('utf-8')
b2= base64.b64decode(b1)
f.write(b2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...