Image in original größe an Server senden

DagobertDokate

DagobertDokate

Dauergast
137
Hallo Leute,

ich habe gerade ein Problem, beidem ich gerade keine Lösung hinbekommen.
Ich möchte aus der Galerie Bilder in voller Qualität zum Server senden.
Jedoch bekomme ich immer eine OutOfMemoryException.
Alle Beispiele im Inet die ich finden kann laufen so ab:
Bitmap bm = BitmapFactory.decodeFile("/path/to/image.jpg");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.JPEG, 100, baos); //bm is the bitmap object
byte[] b = baos.toByteArray();
String base64 = Base64.encodeToString(b, Base64.DEFAULT)
Es muss doch einen schöneren weg geben oder?

lg. Dagobert
 
Keiner nen Rat?

lg. Dagobert
 
Statt das File ganz einzulesen, solltest du es streamen, damit nicht alles auf einmal im Speicher gehalten werden muss. Beispielcode habe ich leider keinen zur Hand, aber ungefähr so würde ich das angehen:

  1. HttpURLConnection öffnen (ich nenne sie mal myConnection)
  2. myConnection.setDoOutput(true)
  3. myConnection.setFixedLengthStreamingMode(int) oder myConnection.setChunkedStreamingMode(int)
  4. mit einem BufferedInputStream o.Ä. Bild einlesen und an new BufferedOutputStream(myConnection.getOutputStream()) weitergeben
  5. Streams und Verbindung schliessen

siehe auch HttpURLConnection Doku, Punkte Posting Content und Performance
 
Zuletzt bearbeitet:
Das Bild zu decodieren und dann wieder zu codieren ist ein speicherplatzhungriger Umweg, den man vermeiden sollte.
 

Ähnliche Themen

Jansenwilson
Antworten
1
Aufrufe
762
swa00
swa00
D
Antworten
23
Aufrufe
2.554
Data2006
D
FabianDev
Antworten
5
Aufrufe
560
swa00
swa00
Zurück
Oben Unten