使用Picasso根据Firebase中的userId获取图像

4

我正在尝试为用户配置文件进行图像上传和下载。当我保存照片时,我使用用户ID保存它,以便在他更改照片时替换它。现在我需要使用Picasso获取该照片,但问题是我不知道如何获取该照片,因为它可能有不同的格式,例如JPEG、PNG等。我只想在用户ID匹配时获取图片。我尝试了以下方法:

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

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

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

需要帮助吗?


你的链接是否返回一张图片? - Cătălin Florescu
我该如何检查? - user7734645
记录您的最终URL。Log.d("URL", storageRef + "/Photos/" + userId); - Cătălin Florescu
尝试了最终使用.jpg和不使用.jpg,但我得到的只是一个普通字符串:04-13 11:28:14.227 28459-28459/com.esmad.pdm.friendlymanager D/image2: gs://friendlymanager-3b7a2.appspot.com/Photos/LqZ5YSxHQZY7JKta5EGWiL3MXi93.jpg - user7734645
3个回答

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

                }
            });

我应该在哪里传递URI? - user7734645
我使用了Glide来加载图片,Picasso也有一种使用Uri来加载图片的方法。类似这样:Picasso.with(context).load(uri).into(imageView); - Muhib Pirani

2

在使用Picasso或者Glide等工具从Firebase存储中获取图像时,应该使用getDownloadUrl()方法。


2
考虑使用 Firebase-UI Android库,它使您能够直接从存储引用中加载图像。在您的情况下,代码看起来应该是这样的:
我不确定 Picasso 是否受支持,但您可以使用 Glide ,例如:
mStorageRef = FirebaseStorage.getInstance().getReference();

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

看起来没问题,但我需要知道图片格式吗?(jpeg、png)? - user7734645
没有Glide会为您处理所有这些花哨的东西,还有缓存。 - Ivan Milisavljevic
看起来不错,我会测试一下,很快给你反馈。 - user7734645
什么是FirebaseImageLoader?找不到它。 - user7734645
它是Firebase-UI Android库的一部分,将compile 'com.firebaseui:firebase-ui:1.2.0'添加到您的依赖项并同步项目。有关更多详细信息,请访问答案中的链接。 - Ivan Milisavljevic
无法升级gradle依赖项,我在我的'com.android.support:appcompat-v7:25.2.0'上遇到了错误,说了一些关于Twitter SDK的事情:S - user7734645

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接