2017-01-12 25 views
2

私は画像とビデオの共有のためのソーシャルアプリを作っています。しかし、画像を読み込むのに時間がかかりすぎます。私はグライドライブラリを使用しています。どうすればギャラリーから取り出された画像のサイズを小さくすることができますか?イメージの質のかなりの変化(Instagram doのような)をして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形式、int型の品質、OutputStreamのストリーム)

を使用して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

ビットマップの品質と圧縮。ただ、それは私の経験の4メガバイトのファイル上のような1〜2メガバイト 件まで画像サイズを小さく先に行くと、上記の手順を、それはあなたのイメージのサイズを小さくし、firebaseにアップロードん

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

は304キロバイトになりました。

filepathは、Fileあなたの選択した画像のオブジェクトです。 :)

+0

ありがとうございました,,,完璧に私のために働いています..なぜこの答えをupvoteしないか...... + 10 – Mariyappan

関連する問題