图片加载缓慢-使用picaso和Firebase Android Studio Java
我为一个用户创建了一个配置文件,但有一个问题: 加载速度慢-因为每个pic为4mb,加载大约需要20秒, 我需要一些关于图像压缩的帮助/减少数据的方法,让程序下载img并更快地将其放入配置文件 我正在使用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();
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) {
}
});
}