Отправка потока изображения через проблему с сокетом - Android

Я реализовал приложение, которое делает снимок с помощью SP-камеры и отправляет его через сокет на сервер.

Я использую следующий код, чтобы прочитать файл изображения, хранящийся локально, и отправить его последовательно через сокет:

FileInputStream fileInputStream = new FileInputStream( "my_image_file_path" );
ByteArrayOutputStream buffer = new ByteArrayOutputStream();

int nRead;
byte[] data = new byte[16384];

try {
    while( (nRead = fileInputStream.read(data, 0, data.length)) != -1 ){
        buffer.write(data, 0, nRead);
        networkOutputStream.write( buffer.toByteArray() );
        buffer.flush();
    }
} catch( IOException e ){
    e.printStackTrace();
}

Проблема, с которой я сталкиваюсь, заключается в том, чтоchanging the size of the array of bytes data[] affects how much of the image is actually sent to the server.

Изображения, размещенные ниже, должны помочь вам понять:

byte[] data = new byte[16384];

enter image description here

byte[] data = new byte[32768];

enter image description here

byte[] data = new byte[65536];

enter image description here

И так далее.

Как вы можете себе представить, я могу найти размер, который позволяет мне отправлять полное изображение, но такое специальное решение неприемлемо, поскольку может потребоваться отправка изображений любого размера.

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

Заранее спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос