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

안드로이드 Firebase Storage Image Upload 질문드립니다.

0 추천
안드로이드 Firebase Image Upload 시에 용량 줄일려면 어떻게 해야 하나요??

 

    private void galleryAddPic()
    {
        Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);

   

        Bitmap bitmap = BitmapFactory.decodeFile(mCurrentPhotoPath);

        ByteArrayOutputStream baos=new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 80, baos);
        byte [] b=baos.toByteArray();
        String temp= Base64.encodeToString(b, Base64.DEFAULT);
       

        File filePath = new File(temp);
        Uri pathUri = Uri.fromFile(filePath);

        intent.setData(pathUri);

        this.sendBroadcast(intent);

 

        // ------------------------------------------------------------- image Upload

        Log.i("Upload", "Upload Start");

        storageRef = storage.getReferenceFromUrl("gs//:").child("images/"+imageFileName);

        storageRef.putFile(pathUri)
                .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                        @SuppressWarnings("VisibleForTests") Uri downloadUrl = taskSnapshot.getDownloadUrl();

                        if(downloadUrl == null)
                        {
                            Toast.makeText(MainActivity.this, "Downlaod Data Null", Toast.LENGTH_SHORT).show();
                        }

                       // downloadImageFile();

                        Log.i("File Upload","File Upload Success");
                    }
                })
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception exception) {

                        Log.i("File Upload","File Upload Failed");

                    }
                });
    }

 

이런식으로 만들었는데,  Log.i("File Upload","File Upload Failed"); 를 보여주네요;;

 

Firebase Storage에 Image를 업로드 시킬 때 어떻게 해야 용량을 줄여서 올릴 수 있을까요??

 

답변 부탁드립니다!
알파고 (4,320 포인트) 님이 2017년 9월 24일 질문

1개의 답변

+1 추천
 
채택된 답변
파일 사이즈 때문에 업로드가 안되었을까요? 다른 문제일 가능성이 큽니다. 로그를 남길때 exception을 출력해 보세요.

아무튼,

base64로 저장하면 원본 이미지 보다 몇배로 커집니다. 따라서 아래 링크를 보시고 파악하세요.

https://stackoverflow.com/questions/14053338/save-bitmap-in-android-as-jpeg-in-external-storage-in-a-folder

Compress부분이 90인데, 90%를 의미합니다. 더 낮추면 더 낮은 해상도로 변환 됩니다.

JPG로 저장했다가, 그 파일을 서버로 올립니다. 아마도 파일을 업로드 하는 파이어베이스 예제가 있을 겁니다. 그걸 사용하시는게 나을 겁니다.

찾아 보니, 조금만 수정하시면 되겠네요.

https://firebase.google.com/docs/storage/android/upload-files?hl=ko
Will Kim (43,170 포인트) 님이 2017년 9월 25일 답변
알파고님이 2017년 9월 25일 채택됨
...