Отправка потока изображения через проблему с сокетом - 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];
byte[] data = new byte[32768];
byte[] data = new byte[65536];
И так далее.
Как вы можете себе представить, я могу найти размер, который позволяет мне отправлять полное изображение, но такое специальное решение неприемлемо, поскольку может потребоваться отправка изображений любого размера.
По моему мнению, проблема в том, как я читаю файл изображения в буферизованном виде, вы можете мне помочь?
Заранее спасибо!