Java 无法将图片从Firebase存储加载到Imageview
我正在将图片上载到应用程序中的Firebase存储。它可以很好地上传,并且可以在firebase storage online中查看。当我试图获取它并在图像视图中显示它时,它不会显示在图像视图中,而图像视图也会消失。我已经用Piccaso和glide试过了,但没有任何效果。代码附在下面 上传代码:Java 无法将图片从Firebase存储加载到Imageview,java,android,firebase,firebase-storage,Java,Android,Firebase,Firebase Storage,我正在将图片上载到应用程序中的Firebase存储。它可以很好地上传,并且可以在firebase storage online中查看。当我试图获取它并在图像视图中显示它时,它不会显示在图像视图中,而图像视图也会消失。我已经用Piccaso和glide试过了,但没有任何效果。代码附在下面 上传代码: @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE && resultCode == RESULT_OK && data != null && data.getData() != null) {
uri = data.getData();
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
profile_image = findViewById(R.id.profileimage);
profile_image.setImageBitmap(bitmap);
imageRef=storageReference.child(userID);
imageRef.putFile(uri)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
//if the upload is successful
//hiding the progress dialog
//and displaying a success toast
//dismissDialog();
profilePicUrl = taskSnapshot.getMetadata().getReference().getDownloadUrl().toString();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
//if the upload is not successful
//hiding the progress dialog
// dismissDialog();
//and displaying error message
Toast.makeText(profile.this, exception.getCause().getLocalizedMessage(), Toast.LENGTH_LONG).show();
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
@覆盖
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
if(requestCode==PICK_IMAGE&&resultCode==RESULT_OK&&data!=null&&data.getData()!=null){
uri=data.getData();
试一试{
位图Bitmap=MediaStore.Images.Media.getBitmap(getContentResolver(),uri);
profile_image=findviewbyd(R.id.profileimage);
profile_image.setImageBitmap(位图);
imageRef=storageReference.child(userID);
imageRef.putFile(uri)
.addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公共无效(UploadTask.TaskSnapshot TaskSnapshot){
//如果上传成功
//隐藏进度对话框
//并展示成功祝酒词
//dismissDialog();
profilePicUrl=taskSnapshot.getMetadata().getReference().getDownloadUrl().toString();
}
})
.addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常){
//如果上传不成功
//隐藏进度对话框
//dismissDialog();
//并显示错误消息
Toast.makeText(profile.this,exception.getCause().getLocalizedMessage(),Toast.LENGTH_LONG).show();
}
});
}捕获(IOE异常){
e、 printStackTrace();
}
}
下载并加载到图像视图代码:
fbstorage=FirebaseStorage.getInstance();
storageReference=fbstorage.getReference();
imageRef=storageReference.child(userID);
final String h=imageRef.getDownloadUrl().toString();
storageReference.child(userID).getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Toast.makeText(profile.this, "hello", Toast.LENGTH_SHORT).show();
Picasso.with(profile.this).load(h).into(profile_image);
}
});
fbstorage=FirebaseStorage.getInstance();
storageReference=fbstorage.getReference();
imageRef=storageReference.child(userID);
最后一个字符串h=imageRef.getDownloadUrl().toString();
storageReference.child(userID).getDownloadUrl().addOnSuccessListener(新的OnSuccessListener()){
@凌驾
成功时的公共无效(Uri){
Toast.makeText(profile.this,“hello”,Toast.LENGTH_SHORT).show();
毕加索.with(profile.this).load(h).into(profile\u图像);
}
});
用glide试试。这个代码对我来说很好用
StorageReference storageReference = FirebaseStorage.getInstance().getReference().child("folderName"+"/"+thePicName);
Glide.with(context.getApplicationContext())
.using(new FirebaseImageLoader())
.load(storageReference)
.asBitmap()
.diskCacheStrategy(DiskCacheStrategy.NONE)
.priority(Priority.IMMEDIATE)
.into(new BitmapImageViewTarget(pic) {
@Override
protected void setResource(Bitmap resource) {
RoundedBitmapDrawable drawable = RoundedBitmapDrawableFactory.create(context.getResources(),
Bitmap.createScaledBitmap(resource, 150, 150, false));
drawable.setCircular(false);
pic.setImageDrawable(drawable);
}
});
上载文件时是否尝试将图像设置为
onSuccess()
内的视图?@AlexMamo是的,同样的问题为什么要加载h
而不是刚检索到的uri?