图片加载缓慢-使用picaso和Firebase Android Studio Java

图片加载缓慢-使用picaso和Firebase Android Studio Java,java,android,firebase,Java,Android,Firebase,我为一个用户创建了一个配置文件,但有一个问题: 加载速度慢-因为每个pic为4mb,加载大约需要20秒, 我需要一些关于图像压缩的帮助/减少数据的方法,让程序下载img并更快地将其放入配置文件 我正在使用android studio和java 这是我的代码: 这里我向用户添加了一些信息 private void sendUserData() { FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();

我为一个用户创建了一个配置文件,但有一个问题: 加载速度慢-因为每个pic为4mb,加载大约需要20秒, 我需要一些关于图像压缩的帮助/减少数据的方法,让程序下载img并更快地将其放入配置文件

我正在使用android studio和java

这是我的代码: 这里我向用户添加了一些信息

private void sendUserData() {
    FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
    DatabaseReference myref = firebaseDatabase.getReference(firebaseAuth.getUid());
    userProfile user = new userProfile(Sphone, Semail, name);// simple object  get and set 
    myref.setValue(user);
    UpdateUserInfo(name, pickedImgUri, firebaseAuth.getCurrentUser());


}
这里是上传图片

private void UpdateUserInfo(final String name, Uri pickedimguri, final FirebaseUser currnetUser) {

    StorageReference mStorageReference = FirebaseStorage.getInstance().getReference().child("users_photos");
    final StorageReference imagefilepath = mStorageReference.child(pickedimguri.getLastPathSegment());
    imagefilepath.putFile(pickedimguri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
            imagefilepath.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                @Override
                public void onSuccess(Uri uri) {
                    UserProfileChangeRequest profileUpdate = new UserProfileChangeRequest.Builder()
                            .setDisplayName(name)
                            .setPhotoUri(uri)
                            .build();
                    currnetUser.updateProfile(profileUpdate)
                            .addOnCompleteListener(new OnCompleteListener<Void>() {
                                @Override
                                public void onComplete(@NonNull Task<Void> task) {
                                    if (task.isSuccessful()) {

                                        showMessage("Register complete");
                                    }
                                }
                           });
                }
            });
        }
    });
}

谢谢

下面是一个为firebase存储压缩图像的示例。这就是我正在使用的方法,它将图像压缩到2-4mb之间,以尝试压缩您的图像-4mb每个图像将非常快速地相加,并且最有效的方法是什么?请按要求发布示例Hanks我会尝试它,效果非常好!
    @Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    name = getView().findViewById(R.id.textView);
    profilepic = getView().findViewById(R.id.profilepic);
    final String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
    final DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    final DatabaseReference uidRef = rootRef.child(uid);
    ValueEventListener valueEventListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String email = dataSnapshot.child("email").getValue(String.class);
            String nameE = dataSnapshot.child("name").getValue(String.class);
            String phone = dataSnapshot.child("phone").getValue(String.class);
            Log.d("TAG", nameE + ", " + email + ", " + phone);
            name.setText("Welcome " + nameE);
            Picasso.get().load(FirebaseAuth.getInstance().getCurrentUser().getPhotoUrl().toString()).into(profilepic);

        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
            Log.d("TAG", databaseError.getMessage()); //Don't ignore errors!
        }
    };
    uidRef.addListenerForSingleValueEvent(valueEventListener);
}
//Start with URI of image
if (uri != null) {
            Bitmap bmp = null;
            try {
                bmp = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
            } catch (IOException e) {
                e.printStackTrace();
            }
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            bmp.compress(Bitmap.CompressFormat.JPEG, 75, baos);
            byte[] bytes = baos.toByteArray();
            StorageReference reference = FirebaseStorage.getInstance().getReference("whatever folder you place the images in/" + name_of_image + ".jpg");
            UploadTask uploadTask = reference.putBytes(bytes);

            uploadTask.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onProgress(@NonNull UploadTask.TaskSnapshot taskSnapshot) {
                }
            }).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception exception) {
                }
            }).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                }
            });
        }