使用基于userId firebase的picasso获取图像

时间:2017-04-13 11:16:30

标签: android firebase firebase-storage

我正在尝试为用户个人资料上传和下载图片,当我保存照片时,我使用userId保存它,这样我每次更改照片时都可以替换它,现在我需要的是获取该照片毕加索,事情是,我不知道如何获得照片,它可以有不同的格式和其他东西,如jpeg,png,我只想在userID匹配时获取图像,我试过这个:

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

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

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

任何帮助?

3 个答案:

答案 0 :(得分:3)

你必须得到这样的下载链接,

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

                }
            });

答案 1 :(得分:2)

使用Picasso OR滑翔等从Firebase存储中提取图像时,您应该使用getDownloadUrl()

答案 2 :(得分:2)

考虑使用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);