2017-01-12 3 views
2

Я сделал социальное приложение для обмена изображениями и видео. Однако он занимает слишком много времени для загрузки изображения. Я использую библиотеку скольжения. Пожалуйста, расскажите мне, как уменьшить размер изображения, взятого из галереи, без значительное изменение качества изображения (например, Instagram do), а затем загрузить его в хранилище firebase. Пожалуйста, помогите!Как уменьшить размер изображения перед загрузкой его в хранилище firebase?

+1

'значительное изменение качества изображения (например, Instagram do)', как легко вы сказали, что, когда instagram имеет ультрасовременные алгоритмы сжатия в реальном времени и лучшие разработчики. В любом случае, вот что вам нужно: http://stackoverflow.com/questions/36487971/how-to-compress-bitmap-as-jpeg-with-least-quality-loss-on-android – OBX

+0

напишите свой код здесь –

+0

Это звучит как проблема, которая, должно быть, была решена раньше. Вы что-нибудь пробовали? Они выглядят многообещающе: http://stackoverflow.com/search?q=%5Bandroid%5D+How+to+reduce+the+size+of+image –

ответ

1

Я сделал то же самое для загрузки изображения на firebase с помощью 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, качество ИНТ OutputStream поток)

вы можете изменить качество растрового изображения и сжать его.

+0

Каково ваше изображениеPathName? –

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(); 
         } 
        });` 

просто идти вперед и делать выше шаги это позволит уменьшить размер изображения и загрузить его на firebase это уменьшить размер изображения ДО 1 до 2 Мб как на мой файл опыт 4MB стал 304Кб.

filepath есть и File объект выбранного вами изображения. :)

+0

большое спасибо ,,, безупречно работаю для меня тоже .. почему нет upvote для этого ответ ...... + 10 – Mariyappan

Смежные вопросы