как декодировать строку readAsBytesSync () в Python, закодированную в dart - PullRequest
0 голосов
/ 19 января 2019

Я отправляю изображение типа файла на облачный сервер, написанный на python. Прежде всего, я получаю содержимое файла в виде списка байтов, затем я конвертирую его в json для отправки на сервер.

List<int> imageBytes = img.readAsBytesSync();
var my_json = {"img":imageBytes};
var encoded = json.encode(my_json);
var channel =  IOWebSocketChannel.connect("ws://34.73.158.146:5903");
channel.sink.add(encoded);

Итак, скажите, пожалуйста, как readAsBytesSync () преобразует изображение в байты и как я могу преобразовать его обратно в изображение в python. Также, пожалуйста, скажите, каков наиболее подходящий способ кодирования и декодирования файлов типа изображения во флаттере?

1 Ответ

0 голосов
/ 03 марта 2019

Детонация:

var params = {
      "image_file": base64Encode(_selectedImage.readAsBytesSync()),
    };

    final response = await http
        .post("http://127.0.0.1:8000/users/upload_image_test/", body: params);
}

Python:

from PIL import Image, 
import io
import base64


def post(self, request, *args, **kwargs):
    received_data = request.data.get('image_file')
    decode_data = base64.b64decode(sent_data)

    byte_image = Image.open(io.BytesIO(decode_data))
    byte_image.show()

Я проверил это, и оно работает. Не забудьте пометить его как правильный ответ при успешном тестировании.

...