JPG в строку Base64 и обратно (Python)

У меня 2 изображения формата JPG, я хочу передать их в свой API как файл JSON, зашифровав в Base64 как строку, потом на сервере я получаю этот файл и превращаю обратно в изображение. Я искал способы как JPG зашифровать в строку Base64, но то ли я что-то сделал не так, то ли тот код не верный (Изображения не открываются, пишет что они повреждены).


Вот код кодирования изображения (Python):

import base64
import json

inp1 = input("Enter file1 name: ")
inp2 = input("Enter file2 name: ")

with open(inp1, "rb") as image_file:
    str1 = base64.b64encode(image_file.read())

with open(inp2, "rb") as image_file:
    str2 = base64.b64encode(image_file.read())  

with open("test.json", 'w') as f:
    data = {"style":str(str1), "image":str(str2)}
    json.dump(data, f)

В двух input'ах пишем имена файлов: style.jpg и image.jpg


Результатом должен стать JSON файл, он будет выглядить так:

{"style":"<Строка Base64>", "image":"<Строка Base64>"}

Потом мы загрузили наш JSON файл на сервер и там уже мы дешифруем наши строки:

def base64_to_image(img):
    data = base64.b64decode(img)
    name = f'uploads/img{random.randint(0, 10000)}.jpg'
    with open(name, 'wb') as f:
        f.write(data)
    return name

with open('uploads/test.json') as json_file:
# JSON файл хранится в папке uploads
    data = json.load(json_file)
    style = data['style']
    image = data['image']

    base64_to_image(style)
    base64_to_image(image)

В итоге мы получаем два не рабочих изображения в папке uploads, как это исправить?


Ответы (0 шт):