gpt4 book ai didi

android - 无法在 ImageView 中显示来自 Firebase 存储的图像

转载 作者:搜寻专家 更新时间:2023-11-01 08:34:04 24 4
gpt4 key购买 nike

我有一个允许用户将图像上传到 Firebase 存储桶的应用程序,然后我获取图像文件的下载 URL 并将其添加到 firebase 数据库。该 URL 的形式为:- https ://firebasestorage.googleapis.com/v0/b/bucket_name.appspot.com/o/filename?alt=media&token=token

然后我尝试使用 Glide 将图像加载到 RecyclerView 中,但我无法这样做并且无法显示图像。

如何获得以 .png 或 .jpeg 等结尾的绝对图像 URL,可以轻松用于加载图像。据我所知,问题出在 url 上

最佳答案

从相机获取图像

                    Intent i = new Intent(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, 3);

获取图片的文件路径

 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_FILE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {

String path=String.valueOf(data.getData());
file = Uri.fromFile(new File(path));

创建文件元数据

  metadata = new StorageMetadata.Builder()
.setContentType("image/jpeg")
.build();

上传文件和元数据到路径'images/avator.jpg'

  uploadTask = storageRef.child("images/"+file.getLastPathSegment()).putFile(file, metadata);

监听状态变化、错误和上传完成。

  uploadTask.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
double progress = (100.0 * taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount();
System.out.println("Upload is " + progress + "% done");
}
}).addOnPausedListener(new OnPausedListener<UploadTask.TaskSnapshot>() {
@Override
public void onPaused(UploadTask.TaskSnapshot taskSnapshot) {
System.out.println("Upload is paused");
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle unsuccessful uploads
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// Handle successful uploads on complete
Uri downloadUrl = taskSnapshot.getMetadata().getDownloadUrl();

}

});

使用Glide Library加载图片

  Glide.with(getActivity())
.load(new File(downloadUrl)) // Uri of the picture
.into(Imageview);

关于android - 无法在 ImageView 中显示来自 Firebase 存储的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38170940/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com