마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

파이어베이스 스토리지에 업로드할때 용량 큰 사진올리면 앱이 팅기던데 최적화하려면 어떻게

0 추천
//업로드
                Bitmap bm = null;
                try {
                    bm = MediaStore.Images.Media.getBitmap(getContentResolver(), url);
                }catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                assert bm != null;
                bm.compress(Bitmap.CompressFormat.JPEG, 25, baos);
                byte[] datad = baos.toByteArray();

                UploadTask uploadTask = imageRef.putBytes(datad);
                uploadTask.addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception exception) {
                        // Handle unsuccessful uploads
                        Toast.makeText(MainActivity.this, "업로드 실패", Toast.LENGTH_SHORT).show();
                    }
                }).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                        // taskSnapshot.getMetadata() contains file metadata such as size, content-type, etc.
                        Toast.makeText(MainActivity.this, "업로드 완료", Toast.LENGTH_SHORT).show();
                    }
                });

url은 갤러리에서 사진선택해서 받은 경로입니다 content://com.android.providers.media.documents/document/image%3A1647

 

BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 4;
Bitmap src = BitmapFactory.decodeFile("/sdcard/image.jpg", options);

출처: http://it77.tistory.com/99 [시원한물냉의 사람사는 이야기]

위에 url을 decodeFile 경로에 string변환해서 넣으면 경로를 못찾았다고 에러메세지가 나오더라고요 ㅠㅠ  찾아보니까 메모리 부족으로 팅기는 것 같은데 다른 방법 있을까요?

안드린이 (2,520 포인트) 님이 2018년 11월 5일 질문
저거 글적을때 스크록 어떻게 넣는건가요?ㅠㅠㅠㅠㅠ 저도글올리려는데 이상하게나와서 글을못적겠어요.ㅠㅠ
BitmapFactory.decodeFile("/sdcard/image.jpg", null,options); 이렇게 해결했어요

1개의 답변

0 추천
 
채택된 답변
Out of meory Exception이 뜨던가요? firebase storage rule에 용량 제한 걸어두신거 아니면 뜨지 않을것 같은데.. upload Failure Listener 안에서 exception 로그에 넣으시면 어떤 예외처리가 안되서 실패뜨는지 알려주는데 한번 로그 찍어보세요.
익명사용자 님이 2018년 11월 5일 답변
안드린이님이 2018년 11월 5일 채택됨
로그 넣는법 찾아보고 에러메세지 확인 후 다시 댓글 달게요! 감사합니다
아아아 업로드 되기전에 팅겨요!!! 저거 비트맵 압축할때 용량 큰 이미지하면 팅기더라고요 파이어베이스 문제는 아닙니다!
노트5로 큰이미지 전송하면 팅기고 갤럭시s7으로하면 안팅겨요!
Bitmap 문제면 Out Of Memory가 뜨는거 같네요. 이미지 처리에서 OOM은 중요하고 관리해야할 부분도 워낙 다양해서  어떻게 처리할지 직접 찾아보셔서 적용하셔야 할듯하네요
...