안녕하세요 여러분, 서버에 이미지 파일을 업로드하는 프로젝트를 진행하고 있습니다. Volley
을 사용하여 서버에 데이터를 보내고 있습니다. 전송할 데이터에는 base64
문자열이 포함되어 있습니다. 이미지 파일을 디코딩 할 때 OutOfMemoryError이 발생했습니다. 올바르게 구현합니까? 여기 내 코드는 다음과 같습니다.비트 맵을 디코딩 할 때 Android OutOfMemoryError
for (int i = 0; i < pathList.size(); i++) {
//error occurred here
Bitmap image = BitmapFactory.decodeFile(pathList.get(i), options);
Log.d("bitmapImage", "nisudSiya" + " " + image);
encodedImage = UploadImageHelper.encodeImageBitmap(UploadImageHelper.scaleBitmap(image, 1000, 1000));
stringUri.add(encodedImage);
}
StringRequest stringRequest = new StringRequest(Request.Method.POST, POST_URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(CreatePostActivity.this, response.toString(), Toast.LENGTH_SHORT).show();
VolleyApp.getInstance().cancelPendingRequests(PUSH_MULTIPLE_IMAGES);
mProgressUpload.dismiss();
finish();
Log.d("tyler", response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
Toast.makeText(CreatePostActivity.this, "Error Uploading!", Toast.LENGTH_SHORT).show();
mProgressUpload.dismiss();
Log.d("tagsdsad23", error.toString());
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
for (int i = 0; i < stringUri.size(); i++) {
Attachment attachment = new Attachment();
attachment.setType("image");
attachment.setUrl(stringUri.get(i));
shit.add(attachment);
}
Log.d("shitsize", String.valueOf(shit.size()));
JSONArray jsonArray = new JSONArray();
for (int i = 0; i < shit.size(); i++) {
try {
JSONObject jsonObject = new JSONObject();
Log.d("shittype", shit.get(i).getUrl());
jsonObject.put("type", shit.get(i).getType());
jsonObject.put("url", shit.get(i).getUrl());
jsonArray.put(jsonObject);
Log.d("tyler-gwapa", jsonObject.toString());
} catch (JSONException e) {
e.printStackTrace();
}
}
Log.d("tyler-gwapa", jsonArray.toString());
Map<String, String> params = new HashMap<String, String>();
params.put(USER_TOKEN, userToken);
params.put(CAPTION, postContent.getText().toString());
params.put(ATTACHMENT, jsonArray.toString());
return params;
}
};
VolleyApp.getInstance().addToRequestQueue(stringRequest, PUSH_MULTIPLE_IMAGES_TAG);
화상 .compress (Bitmap.CompressFormat.JPEG 100 정의 , outStream); 서버에 보내기 전에 이미지 압축 ...! –
이미 입력 한 내용 : encodedImage = UploadImageHelper.encodeImageBitmap (UploadImageHelper.scaleBitmap (image, 1000, 1000)); –
인코딩 된 이미지가 압축되지 않습니다 ..! 일단 이미지를 압축하면 이미지 크기가 줄어 듭니다. –