我有一个问题与我的代码,我必须上传图像到Firebase存储,我需要的图像来自画廊和相机,从画廊的图像是好的,但来自相机的图像给问题,图像加载在ImageView和被发送到数据库是黑色的。有人知道如何解决这个问题吗,或者你知道任何其他加载图像的方法吗?
//Funçao de escolha das opcoes de upload---------------------------------------------------------
private void jeitoImagem() {
final CharSequence[] jeito = {"Camera", "Galeria", "Cancelar"};
//Alert Dialog com as opçoes de escolha-----------------------------------------------------
AlertDialog.Builder b = new AlertDialog.Builder(CadastroEmpresaActivity.this, R.style.Theme_AppCompat_Light_Dialog_Alert);
b.setTitle("Adicionar imagem");
b.setItems(jeito, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
if(jeito[i].equals("Camera")){
abrirCamera();
} else if(jeito[i].equals("Galeria")){
abrirGaleria();
} else if(jeito[i].equals("Cancelar")){
dialogInterface.dismiss();
}
}
});
b.create();
b.show();
}
//Funçao de upar imagem da galeria--------------------------------------------------------------
public void abrirGaleria() {
Intent i = new Intent(Intent.ACTION_PICK);
i.setType("image/*");
startActivityForResult(i,GALERIA);
}
//Funçao de upar imagem da camera---------------------------------------------------------------
public void abrirCamera() {
Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(i, CAMERA);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//passando o data pra variavel uri----------------------------------------------------------
uri = data.getData();
//Verificando a opçao que foi selecionada---------------------------------------------------
来自画廊
if(requestCode == GALERIA && resultCode == RESULT_OK && uri != null){
//Chamando instancia do Storage---------------------------------------------------------
storageReference1 = FirebaseStorage.getInstance().getReference();
try {
//Setando imagem no imageView-------------------------------------------------------
Bitmap b = MediaStore.Images.Media.getBitmap(CadastroEmpresaActivity.this.getContentResolver(), uri);
imagem.setImageBitmap(b);
//Chamando o Storage pra salvar a imagem--------------------------------------------
StorageReference ref = storageReference1.child("Usuario" + System.currentTimeMillis() +".MiBuy");
ref.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
//Passando url da imagem pra variavel---------------------------------------
urlImage = taskSnapshot.getDownloadUrl().toString();
//Alert Dialog de aviso do upload da imagem---------------------------------
AlertDialog.Builder b = new AlertDialog.Builder(CadastroEmpresaActivity.this, R.style.Theme_AppCompat_Light_Dialog_Alert);
b.getContext();
b.setTitle(R.string.upload_imagem);
b.setMessage(R.string.texto_upload_imagem);
b.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
});
b.create();
b.show();
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
//Verificando a opçao que foi selecionada---------------------------------------------------
从相机
if (requestCode == CAMERA && resultCode == RESULT_OK){
//Chamando instancia do Storage---------------------------------------------------------
storageReference2 = FirebaseStorage.getInstance().getReference();
//Caminho da URL------------------------------------------------------------------------
StorageReference mref = storageReference2.child("Usuario"+ System.currentTimeMillis()+"MiBuy");
//Liberando cache nas imagens-----------------------------------------------------------
imagem.setDrawingCacheEnabled(true);
imagem.buildDrawingCache();
//Criando bitmap------------------------------------------------------------------------
Bitmap bitmap = imagem.getDrawingCache();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] dd = baos.toByteArray();
//Upando a imagem pro firebase----------------------------------------------------------
UploadTask uploadTask = mref.putBytes(dd);
uploadTask.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
//Alert Dialog de aviso de erro no upload da imagem-----------------------------
AlertDialog.Builder b = new AlertDialog.Builder(CadastroEmpresaActivity.this, R.style.Theme_AppCompat_Light_Dialog_Alert);
b.getContext();
b.setTitle(R.string.erro_upload_imagem);
b.setMessage(R.string.texto_erro_upload_imagem);
b.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
});
b.create();
b.show();
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
//Alert Dialog de aviso do upload da imagem-------------------------------------
AlertDialog.Builder b = new AlertDialog.Builder(CadastroEmpresaActivity.this, R.style.Theme_AppCompat_Light_Dialog_Alert);
b.getContext();
b.setTitle(R.string.upload_imagem);
b.setMessage(R.string.texto_upload_imagem);
b.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
});
b.create();
b.show();
//Passando url da imagem pra variavel-------------------------------------------
Uri ddownload = taskSnapshot.getDownloadUrl();
urlImage = taskSnapshot.getDownloadUrl().toString();
//Colocando imagem no imageView
Picasso.with(CadastroEmpresaActivity.this).load(ddownload).into(imagem);
}
});
}
}
用于启动相机应用的意图仅返回缩略图,您可以从返回的数据中获得缩略图:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
...
mImageView.setImageBitmap(imageBitmap);
}
}
如果您想获得一个全尺寸的图像,您必须创建一个文件来保存该图像,为该文件创建一个URI,并将URI作为额外内容添加到意图中。这在留档中描述。
我有一个按钮,它向用户提供选择,他是否想要从画廊或相机的图像。当用户从图库拍摄图像时,我能够成功地将图像上传到Firebase存储,但是当用户选择相机时,我无法将图像上传到存储。这是用户选择相机时的onActivityResult代码 它将图像上传到我的imageview,但给我错误提示 当我尝试上载到存储时 我在stack overflow上遇到了一个类似的问题。 我认为公认的答案是错误的,因为
我正在尝试用相机拍照并上传到Firebase。我使用AlertDialog询问用户是否想要使用相机或从图库中选择图像。我可以用相机拍照,但是当我试图上传图像时,它说找不到图像。 以下是我的图像选择方法: 下面是我上传图片的方法: 提前感谢任何帮助的朋友。
我正在开发一个简单的博客应用程序,允许用户将照片从手机图库和描述上传到Firebase服务器。我正在尝试修改我的当前项目,以允许用户从照相机捕获照片并将其上载到firebase服务器。 目前,我能够将我捕获的图像显示到Image按钮中,但是我无法将我的图像发布到Firebase服务器(提交发布按钮不会对我的点击功能做出反应)。 我怀疑我的startPosting()函数中有错误,或者我没有正确编码
我从Firebase存储中获取图像,用相机拍照,或者从图书馆中挑选一张。当其中一个完成时,我有一个类来存储,以便在需要时使用它。 现在我需要将此图像上传到Firebase存储(修改或新建,无所谓)。Firebase允许我使用以下选项之一:或,每个选项分别需要或。 我怎么能把我的,并从它获得一个或用于上传? -- 或者,为了解决这个问题,当我从Firebase存储中检索图像时,如何获取图像的? 无论
我想将相机拍摄的图像上传到firebase存储。我知道如何存储图像,一旦我得到图像的Uri格式,但我从相机活动得到位图。所以我需要知道怎么做? 我使用函数uploadFile()将图像的Uri存储到firebase存储,然后获取图像的url以将其存储在firebase实时数据库中。但是我需要将位图转换为Uri吗?如果是,如何进行?我发现的代码不起作用,如果有其他方法,请告诉我 谢谢您的时间:)
我试图上传一个图像文件,我得到了使用Imagepicker。 但上面的代码返回以下错误 VERBOSE-2:ui\u dart\u状态。cc(186)]未处理的异常:MissingPluginException(未找到方法任务的实现#通道插件上的startPutFile.flatter.io/firebase_存储)#0 MethodChannel_invokeMethod包:flatter/..