java - 如何使用用户 ID 检索和显示图像
问题描述
我已经用用户 ID 上传了图片,但是。如何显示图像?使用 uri、位图或其他方法?
这就是我将图像上传到 firebaseStorage 的方式。
UploadTask uploadTask = FirebaseStorage.getInstance().getReference(userUid).child("MembersUser").putBytes(bytes);
uploadTask
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Toast.makeText(getActivity(), "Uploaded", Toast.LENGTH_SHORT).show();
imgprofile.setImageURI(uri);
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(getContext(), e.getMessage(), Toast.LENGTH_LONG).show();
}
});
这就是我从 firebaseStorage 调用或下载图像的方式,但是当我们从 firebaseStorage 调用时我不知道如何显示图像。
StorageReference storageReference = FirebaseStorage.getInstance().getReference("" +currentUserID).child("image/jpeg");
final long ONE_MEGABYTE = 1024 * 1024;
storageReference.getBytes(ONE_MEGABYTE).addOnSuccessListener(new OnSuccessListener<byte[]>() {
@Override
public void onSuccess(byte[] bytes) {
imgprofile.setImageURI();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
});
当我 setImageUri 我不知道在哪里打电话。
解决方案
您可以在下载后执行以下操作将图像重建为位图byte[] bytes
,然后将 ImageView 的位图设置为您刚刚创建的位图:
....
@Override
public void onSuccess(byte[] bytes) {
Bitmap bitmap= BitmapFactory.decodeByteArray(bytes,0,bytes.length);
imageView.setImageBitmap(bitmap);
}
....
推荐阅读
- c# - 无法从 void 类型隐式转换为 Systems.Collections.Generics.List<>
- if-statement - 在 fortran 上读取用户输入后什么都没有出现
- firebase - Firestore/Flutter:遍历文档集合的 ID 并将它们作为列表输出
- python - 无法在 AWS cloud9 上运行 Pyperclip
- c++ - C++ 无法识别 getline()
- javascript - 我如何让它在 React Native ( Logic ) 中工作
- python - 对于 pymc3 的命令 pm.plot_posterior
- azure-active-directory - AAD B2C newUser 属性
- javascript - 如何在有条件地搜索行中的另一个值的同时获取 HTML 行元素
- r - R:如何将值矩阵转换为函数