Senden von Image Stream über Socket Issue - Android

Ich habe eine Anwendung implementiert, die ein Bild mit der SP-Kamera aufnimmt und es über einen Socket an den Server sendet.

Ich verwende den folgenden Code, um die lokal gespeicherte Bilddatei zu lesen und sie in aufeinanderfolgenden Abschnitten über den Socket zu senden:

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();
}

Das Problem, mit dem ich konfrontiert bin, ist dasÄndern der Größe des Bytearraysdata[] Beeinflusst, wie viel des Bildes tatsächlich an den Server gesendet wird.

Die folgenden Bilder sollen Ihnen das Verständnis erleichtern:

byte[] data = new byte[16384];

byte[] data = new byte[32768];

byte[] data = new byte[65536];

Und so weiter.

Wie Sie sich vorstellen können, kann ich eine Größe finden, mit der ich das vollständige Bild senden kann. Eine solche Ad-hoc-Lösung ist jedoch nicht akzeptabel, da möglicherweise Bilder jeder Größe gesendet werden müssen.

Meiner Meinung nach scheint es ein Problem in der Art und Weise zu geben, wie ich die Bilddatei gepuffert lese. Können Sie mir helfen?

Danke im Voraus!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage