2017-01-12 12 views
2

이미지 및 비디오 공유를위한 소셜 앱을 만들었습니다. 그러나 이미지를로드하는 데 너무 많은 시간이 걸립니다. 글라이드 라이브러리를 사용하고 있습니다. 갤러리에서 가져온 이미지의 크기를 줄이려면 어떻게해야합니까? 이미지 품질의 상당한 변화 (예 : Instagram do). 그런 다음 firebase 저장 장치에 업로드하십시오. 도움을 청하십시오!이미지를 firebase storage에 업로드하기 전에 이미지 크기를 줄이는 방법은 무엇입니까?

+1

'Instagram do과 같은 이미지의 품질이 크게 바뀌 었습니다. '인스 타 그램이 최첨단 실시간 압축 알고리즘과 최고의 개발자를 보유하고있을 때 얼마나 쉽게 말했습니까? 어쨌든, 여기 당신을 위해 뭔가가 있습니다 : http://stackoverflow.com/questions/36487971/how-to-compress-bitmap-as-jpeg-with-least-quality-loss-on-android – OBX

+0

여기에 코드를 게시하십시오 –

+0

This 전에 풀어야했던 문제와 같은 것 같습니다. 뭐 해봤 니? 다음과 같이 유망 해 보입니다. http://stackoverflow.com/search?q=%5Bandroid%5D+How+to+reduce+the+size+of+image –

답변

1

나는 bitmap.compress에게

private void postDataToFirebase() { 
     mProgressDialog.setMessage("Posting the Blog to Firebase"); 
     mProgressDialog.setCancelable(false); 

     final String titleValue = mPostTitle.getText().toString(); 
     final String description = mPostDescription.getText().toString(); 
     if((!TextUtils.isEmpty(titleValue))&& (!TextUtils.isEmpty(description)) && bitmap != null) 
     { 
      mProgressDialog.show(); 
      StorageReference filePath = mStorage.child("Blog_Images").child(imagePathName); 
      ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
      bitmap.compress(Bitmap.CompressFormat.JPEG, 20, bytes); 
      String path = MediaStore.Images.Media.insertImage(PostActivity.this.getContentResolver(), bitmap, imagePathName, null); 
      Uri uri = Uri.parse(path); 
      filePath.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { 
       @Override 
       public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 

        Uri downloadUrl = taskSnapshot.getDownloadUrl(); 

        DatabaseReference newPost = mDatabaseReference.push(); 
        newPost.child("Title").setValue(titleValue); 
        newPost.child("Desc").setValue(description); 
        newPost.child("imageUrl").setValue(downloadUrl.toString()); 
        Toast.makeText(PostActivity.this, "Data Posted Successfully to Firebase server", Toast.LENGTH_LONG).show(); 
        mProgressDialog.dismiss(); 
        Intent intent = new Intent(PostActivity.this, MainActivity.class); 
        startActivity(intent); 
       } 
      }); 

     } 

    } 

bitmap.compress (Bitmap.CompressFormat 형식 INT 품질의 OutputStream 스트림)

사용자가 변경할 수를 사용하여 중포 기지 이미지를 업로드 같은 짓을 비트 맵의 ​​품질과 압축.

+0

imagePathName은 무엇입니까? –

2
StorageReference childRef2 = your firebase storage path 
storageRef.child(UserDetails.username+"profilepic.jpg"); 
        Bitmap bmp = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath); 
        ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
        bmp.compress(Bitmap.CompressFormat.JPEG, 25, baos); 
        byte[] data = baos.toByteArray(); 
        //uploading the image 
        UploadTask uploadTask2 = childRef2.putBytes(data); 
        uploadTask2.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { 
         @Override 
         public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 
          pd.dismiss(); 
          Toast.makeText(Profilepic.this, "Upload successful", Toast.LENGTH_LONG).show(); 
         } 
        }).addOnFailureListener(new OnFailureListener() { 
         @Override 
         public void onFailure(@NonNull Exception e) { 
          pd.dismiss(); 
          Toast.makeText(Profilepic.this, "Upload Failed -> " + e, Toast.LENGTH_LONG).show(); 
         } 
        });` 

그냥 3백4킬로바이트 된 1 내 경험 4메가바이트 파일에 같은 메가 2 개까지 이미지 크기를 줄일 수는 이미지 크기를 줄이고 중포 기지에 업로드합니다 가서 위의 단계를 수행합니다.

filepath은 (는) 사용자 이미지의 객체입니다. File :)

+0

정말 고마워요, 완벽하게 나를 위해 일해도 .. 왜이 대답에 대한 upvote ...... + 10 – Mariyappan

관련 문제