Чтобы отправить байты изображения в C# и прочитать в Python - PullRequest
0 голосов
/ 12 февраля 2020

Теперь я отправляю байт изображения с клиента C# на сервер python.

На данный момент это мой код C#.

private byte[] JPGSerialize(byte[] jpgbytes)
{
    byte[] data = null;

    using (MemoryStream stream = new MemoryStream())
    {
        using (BinaryWriter writer = new BinaryWriter(stream))
        {
            writer.Write(jpgbytes.Length);
            writer.Write(jpgbytes);   // Encoding type JPG

            stream.Position = 0;

            data = new byte[stream.Length];
            stream.Read(data, 0, data.Length);
        }
    }
    return data;
}

Я хочу сначала включить длину двоичного потока.

Поскольку я использую TCP для связи, мне нужно убедиться, что все данные передаются или нет.

И я получу это на сервере python, преобразую в изображение и попытаюсь получить значение цвета в пикселях.

Это моя часть кода python.

  while True:
     Received_data = client_socket.recv(4096)   # type is bytes

     # need to divide 

     img = Image.open(io.BytesIO(Received_data[1:]))  # it is right?
     # I got this error  
     # "cannot identify image file %r" % (filename if filename else fp)
     # PIL.UnidentifiedImageError: cannot identify image file 
     # <_io.BytesIO object at 0x000001EFA3E5DCA8>

     pixels = np.array(img)

Обычно данные передаются в виде байтов типа

, и мне нужно разделить байты длины / jpg.

Я знаю, как это сделать на C#. Поэтому я выполнил поиск.

ReadInt (), ReadByte (), ReadString () и др. c. в Python?

Итак, я проверил это и сослался на ответы с наибольшим количеством голосов. Это было похоже на то, как это делает C#.

Но я получил эту ошибку: «объект байтов не имеет атрибута чтения»

Я искал вопросы, связанные с этим, но, похоже, они отличаться от моего случая. (например, JSON анализ)

Я хочу знать, существует ли такой код, который использует Python.

https://docs.microsoft.com/en-us/dotnet/api/system.io.binaryreader?view=netframework-4.8

Итак, мой вопрос:

  1. Чтобы разделить предоставленный тип данных байтов

  2. Для преобразования байтов в изображение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...