W obrazie o wysokiej rozdzielczości dla Androida kończy się pamięć
Dobrzy koledzy deweloperzy.
Jestem zajęty, aby android przesyłał zdjęcia z aplikacji.
Udało mi się to także sprawdzić (kod będzie poniżej)
Ale kiedy wysyłam duże obrazy (10 megapikseli) moja aplikacja ulega awarii z wyjątkiem braku pamięci.
Rozwiązaniem jest użycie kompresji, ale co zrobić, jeśli chcę wysłać obraz w pełnym rozmiarze?
Myślę, że może coś ze strumieniem, ale nie jestem rodziną ze strumieniami. Być może urlconnection może pomóc, ale naprawdę nie mam pojęcia.
Podaję nazwę pliku Nazwa pliku [0 do 9999] .jpg Wartość wpisu z datą obrazu nosi nazwę Filedata Podaje UID dla wartości postu dropboxid
Poniższy kod działa, ale chciałbym rozwiązać mój problem, który uniemożliwia przesyłanie obrazów o wysokiej rozdzielczości.
Z poważaniem
<code>try { ByteArrayOutputStream bos = new ByteArrayOutputStream(); bitmap.compress(CompressFormat.JPEG, 100, bos); byte[] data = bos.toByteArray(); HttpPost postRequest = new HttpPost(URL_SEND); ByteArrayBody bab = new ByteArrayBody(data, "File" + pad(random.nextInt(9999) + 1) + ".jpg"); MultipartEntity reqEntity = new multipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); reqEntity.addPart("Filedata", bab); reqEntity.addPart("dropboxId", new StringBody(URLEncoder.encode(uid))); postRequest.setEntity(reqEntity); HttpResponse response = httpClient.execute(postRequest); BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8")); String sResponse; StringBuilder s = new StringBuilder(); while((sResponse = reader.readLine()) != null) { s = s.append(sResponse); } if(d) Log.i(E, "Send response:\n" + s); } catch (Exception e) { if(d) Log.e(E, "Error while sending: " + e.getMessage()); return ERROR; } </code>