Przesyłanie strumienia obrazu przez problem z gniazdem - Android
Zaimplementowałem aplikację, która robi zdjęcie za pomocą aparatu SP i wysyła je przez gniazdo do serwera.
Używam następującego kodu do odczytu pliku obrazu przechowywanego lokalnie i wysyłania go w kolejnych porcjach przez gniazdo:
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();
}
Problem, z którym się borykam, jest takizmiana rozmiaru tablicy bajtówdata[]
wpływa na to, jaka część obrazu jest faktycznie wysyłana na serwer.
Obrazy zamieszczone poniżej powinny pomóc w zrozumieniu:
byte[] data = new byte[16384];
byte[] data = new byte[32768];
byte[] data = new byte[65536];
I tak dalej.
Jak można sobie wyobrazić, mogę znaleźć rozmiar, który pozwala mi wysłać pełny obraz, ale takie rozwiązanie ad hoc jest nie do przyjęcia, ponieważ konieczne może być wysłanie obrazów o dowolnym wymiarze.
Moim zdaniem wydaje się, że jest problem ze sposobem, w jaki czytam plik obrazu w buforowany sposób, możesz mi pomóc?
Z góry dziękuję!