根据 userId firebase 使用 picasso 获取图像

get image with picasso based on userId firebase

我正在尝试为用户配置文件上传和下载图片,当我保存照片时,我将其与 userId 一起保存,这样每次他更改照片时我都可以替换它,现在我需要的是获取它与毕加索的照片,问题是,我不知道如何获取照片,它可以有不同的格式和其他东西,如 jpeg、png,我只想在用户 ID 匹配时获取图像,我试过这个:

storageRef = storage.getReferenceFromUrl("gs://friendlymanager-3b7a2.appspot.com");

Picasso.with(UserSettings.this).load(storageRef + "/Photos/" + userId).into(userImage);

我的 userImage 是我的 imageView,我没有得到任何错误只是一个空白图像,我已经有特定用户的照片。

有什么帮助吗?

在使用 Picasso 或 glide 等从 Firebase 存储中获取图像时,您应该使用 getDownloadUrl()

你必须像这样下载 link,

 StorageReference storageRef = storage.getReference().child("users").child(FirebaseAuth.getInstance().getCurrentUser().getUid()).child(FirebaseAuth.getInstance().getCurrentUser().getUid());//reach out to your photo file hierarchically as stored  on firebase
            storageRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                @Override
                public void onSuccess(Uri uri) {
                    Log.e("URI", uri.toString());
                    Glide.with(SaveUserActivity.this).load(uri).into(profile_image);
                    url = uri.toString();

                }
            });

考虑使用 Firebase-UI Android library,它使您能够直接从存储引用加载图像。在你的情况下,它看起来像这样

我不确定是否支持 Picasso,但你可以使用 Glide 例如:

mStorageRef = FirebaseStorage.getInstance().getReference();

Glide.with(this /* context */)
    .using(new FirebaseImageLoader())
    .load(mStorageRef + "/Photos/" + userId)
    .error(R.drawable.default)
    .into(imageView);